eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreeContentProvider.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreeEditorWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreeLabelProvider.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/OpenFeatureTreeEditorWizardHandler.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizard.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/SelectFeatureTreeWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/ShowLoginWindowHandler.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmPropertyChangeEvent.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CheckboxElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CommandHandlerButton.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/GatheringEventUnitElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ICdmFormElement.java -text
--- /dev/null
+package eu.etaxonomy.taxeditor.featuretree;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.wizard.WizardDialog;
+
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ *
+ * @author a.kohlbecker
+ *
+ */
+public class OpenFeatureTreeEditorWizardHandler extends AbstractHandler {
+
+ /**
+ * unused, only added as reference
+ */
+ String commandID = "eu.etaxonomy.taxeditor.store.open.FeatureTreeEditorWizard";
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
+ WizardDialog dialog = new WizardDialog(StoreUtil.getShell(),
+ featureTreeEditorDialog);
+
+ dialog.open();
+ return null;
+ }
+
+}
import org.eclipse.ui.IWorkbenchPreferencePage;
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeEditorWizard;
+import eu.etaxonomy.taxeditor.featuretree.OpenFeatureTreeEditorWizardHandler;
+import eu.etaxonomy.taxeditor.ui.element.CommandHandlerButton;
/**
* <p>
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new GridLayout());
- final Button button_openFeatureTree = new Button(composite, SWT.PUSH);
+ final CommandHandlerButton button_openFeatureTree = new CommandHandlerButton(composite, SWT.PUSH, "eu.etaxonomy.taxeditor.store.open.FeatureTreeEditorWizard");
button_openFeatureTree.setText("Open FeatureTree Editor");
-
- button_openFeatureTree.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- FeatureTreeEditorWizard featureTreeEditorDialog = new FeatureTreeEditorWizard();
- WizardDialog dialog = new WizardDialog(getShell(),
- featureTreeEditorDialog);
-
- dialog.open();
- }
- });
-
+
return composite;
}
}
--- /dev/null
+package eu.etaxonomy.taxeditor.ui.element;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import org.eclipse.core.commands.Command;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.NotEnabledException;
+import org.eclipse.core.commands.NotHandledException;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.commands.ICommandService;
+import org.eclipse.ui.handlers.IHandlerService;
+
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.LoginManager;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ * A Button which executes a <code>IHandler</code> managed through a
+ * <code>org.eclipse.ui.handlers</code> extension point
+ *
+ * see http://wiki.eclipse.org/Platform_Command_Framework#Commands
+ *
+ * @author a.kohlbecker
+ *
+ */
+public class CommandHandlerButton extends Composite implements Observer {
+
+ String commandId;
+ Button button;
+
+ /**
+ * @param parent
+ * @param style
+ * @param commandId the id of the command handler as defined in a <code>org.eclipse.ui.handlers</code> extension point
+ */
+ public CommandHandlerButton(Composite parent, int style, String commandId) {
+ super(parent, SWT.NONE);
+ this.commandId = commandId;
+
+ setLayout(new GridLayout());
+ setLayoutData(new GridData());
+
+ button = new Button(this, style);
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent se) {
+ // you can execute a command directly ... but to get the proper environment it's better to execute it through the IHandlerService:
+ IHandlerService handlerService = (IHandlerService) StoreUtil.getActivePart().getSite().getService(IHandlerService.class);
+ try {
+ handlerService.executeCommand(CommandHandlerButton.this.commandId, null);
+ } catch (ExecutionException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NotDefinedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NotEnabledException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (NotHandledException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ });
+ updateButtonEnabledState();
+
+ CdmStore.getLoginManager().addObserver(this);
+ addDisposeListener(new DisposeListener() {
+ @Override
+ public void widgetDisposed(DisposeEvent e) {
+ CdmStore.getLoginManager().deleteObserver(CommandHandlerButton.this);
+ }
+ });
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
+ */
+ @Override
+ public void update(Observable o, Object arg) {
+ if(o instanceof LoginManager){
+ updateButtonEnabledState();
+ }
+
+ }
+
+ private void updateButtonEnabledState() {
+ ICommandService commandService = (ICommandService) StoreUtil.getActivePart().getSite().getService(ICommandService.class);
+ Command command = commandService.getCommand(commandId);
+ if(!button.isDisposed()){
+ button.setEnabled(command != null && command.isEnabled());
+ }
+ }
+
+ public void setText(String string) {
+ button.setText(string);
+ }
+}