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

Reply via email to