Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [stp-dev] [xef] patch for opening add assertion dialog from outside

Hello David,

This patch allows to open Add Assertion dialog from outside.
Setting "ADD_ELEMENT_ON_OPEN" can be removed.


Fix: patch added.

--
Regards, Alexey
Index: C:/STP/org.eclipse.stp.xef/src/org/eclipse/stp/ui/xef/editor/XefEditor.java
===================================================================
--- C:/STP/org.eclipse.stp.xef/src/org/eclipse/stp/ui/xef/editor/XefEditor.java	(revision 2010)
+++ C:/STP/org.eclipse.stp.xef/src/org/eclipse/stp/ui/xef/editor/XefEditor.java	(working copy)
@@ -14,8 +14,8 @@
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.IPageChangedListener;
-import org.eclipse.jface.dialogs.PageChangedEvent;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.stp.policy.common.editors.IPolicyDetailEditorInput;
 import org.eclipse.stp.ui.xef.policy.editor.PolicyDetailEditorInputWrapper;
 import org.eclipse.ui.IEditorInput;
@@ -25,8 +25,17 @@
 
 public class XefEditor extends FormEditor {
     XefEditPage policyEditPage;
-    XMLEditPage xmlEditPage;    
-    
+    XMLEditPage xmlEditPage;
+
+    public final static String OPEN_ADD_DIALOG = "OPEN_ADD_DIALOG";
+    IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener(){
+    	public void propertyChange(PropertyChangeEvent event) {
+    		if(OPEN_ADD_DIALOG.equals(event.getProperty())) {
+    			policyEditPage.block.addButtonListener.widgetSelected(null);
+    		}
+    	}
+    };
+
     @Override
     public void init(IEditorSite site, IEditorInput input) throws PartInitException {
         super.init(site, getXMLProviderEditorInput(input));
@@ -34,17 +43,7 @@
         XMLProviderEditorInput ei = ((XMLProviderEditorInput) getEditorInput());
         setPartName(ei.getSetting(Setting.TITLE));
 
-        if (Boolean.valueOf(ei.getSetting(Setting.ADD_ELEMENT_ON_OPEN))) {
-            addPageChangedListener(new IPageChangedListener() {
-                boolean dialogOpened = false;
-                public void pageChanged(PageChangedEvent event) {
-                    if (!dialogOpened) {
-                        dialogOpened = true;
-                        policyEditPage.block.addButtonListener.widgetSelected(null);
-                    }
-                }            
-            });
-        }
+        addPartPropertyListener(propertyChangeListener);
     }
 
     
@@ -136,4 +135,9 @@
         return false;
     }
 
+    @Override
+    public void dispose() {
+    	removePartPropertyListener(propertyChangeListener);
+    	super.dispose();
+    }
 }

Back to the top