On Friday, June 22, 2012 03:54:53 PM Marco Foi wrote:
> Thanks to both of you, Mauricio and Andre but I had no luck with your
> snippets of code.
> I keep getting NullPointerException all over around.
Tip: It is better strategy print all the stack to get more useful information.
I mean
...
catch (Exception ex) {
ex.printStackTrace();
// System.out.print("Error: "+ex.toString());
}
...
>
> The code of my MergeOperation class is available in
> https://github.com/mcfoi/udig-platform/blob/merge-tool-fixes/plugins/eu.udig
> .tools/src/eu/udig/tools/merge/MergeOperation.java
I realized that the operation is using the MergeTool.ID to get the View. It
should be MergeView.ID. That is
public void run() {
try {
// = (MergeView) ApplicationGIS.getView(true, MergeTool.ID); << need a view
mergeView= (MergeView) ApplicationGIS.getView(true, MergeView.ID);
... I comment the following in order to try if the view is open.
//mergeView.addSourceFeatures(selectedFeatures);
//mergeView.display();
Additionaly the view shoud be register in a perspective so I add the
perspective extension:
<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension
targetID="net.refractions.udig.ui.mapPerspective">
<viewShortcut
id="eu.udig.tools.merge.internal.view.MergeView">
</viewShortcut>
</perspectiveExtension>
</extension>
>
> Hoping to have brighter ideas next week.
>
> Marco
I have attached a patch with my hack
cheers
--
Mauricio Pazos
diff --git a/plugins/eu.udig.tools/plugin.xml b/plugins/eu.udig.tools/plugin.xml
index 6f76833..aef0144 100644
--- a/plugins/eu.udig.tools/plugin.xml
+++ b/plugins/eu.udig.tools/plugin.xml
@@ -3,9 +3,6 @@
<plugin>
<extension
- point="org.eclipse.ui.actionSets">
- </extension>
- <extension
point="net.refractions.udig.project.ui.tool">
<modalTool
categoryId="net.refractions.udig.tool.edit.feature"
@@ -40,29 +37,28 @@
id="eu.udig.tools.merge.internal.view.MergeView"
name="Merge Features">
</view>
- <view
- allowMultiple="false"
- category="net.refractions.udig.project.ui.project"
- class="eu.udig.tools.merge.TestView"
- icon="icons/etool16/merge_feature_mode.gif"
- id="eu.udig.tools.merge.TestView"
- name="Test View">
- </view>
- </extension>
- <extension
- point="org.eclipse.help.toc">
</extension>
<extension
point="net.refractions.udig.ui.operation">
<operation
+ categoryId="net.refractions.udig.project.ui.operation.layerCategory"
class="eu.udig.tools.merge.MergeOperation"
description="Merge the selected features"
enablesFor="1"
icon="icons/etool16/merge_feature_mode.gif"
id="eu.udig.tools.merge.mergeoperation"
name="Merge selected"
- targetClass="org.geotools.data.FeatureSource">
+ targetClass="net.refractions.udig.project.ILayer">
</operation>
</extension>
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="net.refractions.udig.ui.mapPerspective">
+ <viewShortcut
+ id="eu.udig.tools.merge.internal.view.MergeView">
+ </viewShortcut>
+ </perspectiveExtension>
+ </extension>
</plugin>
diff --git a/plugins/eu.udig.tools/src/eu/udig/tools/merge/MergeOperation.java b/plugins/eu.udig.tools/src/eu/udig/tools/merge/MergeOperation.java
index f77acd6..acd691e 100644
--- a/plugins/eu.udig.tools/src/eu/udig/tools/merge/MergeOperation.java
+++ b/plugins/eu.udig.tools/src/eu/udig/tools/merge/MergeOperation.java
@@ -14,11 +14,15 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IPerspectiveDescriptor;
+import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.ui.internal.WorkbenchWindow;
+import org.jfree.eastwood.Application;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.filter.Filter;
@@ -41,18 +45,22 @@ public class MergeOperation implements IOp {
//Turn the filter into a List of features
selectedFeatures = Util.retrieveFeatures(filterSelectedFeatures, selectedLayer);
+
display.asyncExec(new Runnable(){ // <<<== Throws NullPointerException
public void run() {
try {
- mergeView = (MergeView) ApplicationGIS.getView(true, MergeTool.ID);
-
- mergeView.addSourceFeatures(selectedFeatures);
+
+// MergeView view = (MergeView) ApplicationGIS.getView(true, MergeTool.ID); <<< the view is required
+ mergeView= (MergeView) ApplicationGIS.getView(true, MergeView.ID);
+
+ //mergeView.addSourceFeatures(selectedFeatures);
- mergeView.display();
+ //mergeView.display();
}
- catch (Exception ex) {
- System.out.print("Error: "+ex.toString());
+ catch (Exception ex) {
+ ex.printStackTrace(); // better information to debug
+ System.out.print("Error: "+ex.toString());
}
}});
diff --git a/plugins/eu.udig.tools/src/eu/udig/tools/merge/internal/view/MergeView.java b/plugins/eu.udig.tools/src/eu/udig/tools/merge/internal/view/MergeView.java
index a376d7f..bce8ae4 100644
--- a/plugins/eu.udig.tools/src/eu/udig/tools/merge/internal/view/MergeView.java
+++ b/plugins/eu.udig.tools/src/eu/udig/tools/merge/internal/view/MergeView.java
@@ -63,7 +63,7 @@ import eu.udig.tools.merge.MergeContext;
public class MergeView extends ViewPart implements IUDIGView {
public static final String ID = "eu.udig.tools.merge.internal.view.MergeView"; //$NON-NLS-1$
-
+
private MergeComposite mergeComposite = null;
private CancelButtonAction cancelButton = null;
diff --git a/plugins/net.refractions.udig.libs/.classpath b/plugins/net.refractions.udig.libs/.classpath
index c38eb65..1e22aed 100644
--- a/plugins/net.refractions.udig.libs/.classpath
+++ b/plugins/net.refractions.udig.libs/.classpath
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>
<classpathentry exported="true" kind="lib" path="lib/antlr-3.3.jar"/>
<classpathentry exported="true" kind="lib" path="lib/antlr-runtime-3.3.jar"/>
@@ -142,8 +145,5 @@
<classpathentry exported="true" kind="lib" path="lib/xmlrpc-client-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/xmlrpc-common-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel