diff --git a/sb4e/src/no/tobask/sb4e/SceneBuilderControlActionHandler.java b/sb4e/src/no/tobask/sb4e/SceneBuilderControlActionHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..11582ddce124afc68fffd2ea7142d0ad5e37c71c --- /dev/null +++ b/sb4e/src/no/tobask/sb4e/SceneBuilderControlActionHandler.java @@ -0,0 +1,30 @@ +package no.tobask.sb4e; + +import org.eclipse.jface.action.Action; + +import com.oracle.javafx.scenebuilder.kit.editor.EditorController; +import com.oracle.javafx.scenebuilder.kit.editor.EditorController.ControlAction; + +public class SceneBuilderControlActionHandler extends Action { + + private EditorController editorController; + private ControlAction controlAction; + + public SceneBuilderControlActionHandler(EditorController editorController, ControlAction controlAction) { + this.editorController = editorController; + this.controlAction = controlAction; + } + + @Override + public boolean isEnabled() { + return editorController.canPerformControlAction(controlAction); + } + + @Override + public void run() { + if (editorController.canPerformControlAction(controlAction)) { + editorController.performControlAction(controlAction); + } + } + +} diff --git a/sb4e/src/no/tobask/sb4e/SceneBuilderEditActionHandler.java b/sb4e/src/no/tobask/sb4e/SceneBuilderEditActionHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..8e5d4a06d7c9e82f4d5b8a1b6d9f6e3910a0c3f3 --- /dev/null +++ b/sb4e/src/no/tobask/sb4e/SceneBuilderEditActionHandler.java @@ -0,0 +1,29 @@ +package no.tobask.sb4e; + +import org.eclipse.jface.action.Action; + +import com.oracle.javafx.scenebuilder.kit.editor.EditorController; +import com.oracle.javafx.scenebuilder.kit.editor.EditorController.EditAction; + +public class SceneBuilderEditActionHandler extends Action { + + private EditorController editorController; + private EditAction editAction; + + public SceneBuilderEditActionHandler(EditorController editorController, EditAction editAction) { + this.editorController = editorController; + this.editAction = editAction; + } + + @Override + public boolean isEnabled() { + return editorController.canPerformEditAction(editAction); + } + + @Override + public void run() { + if (editorController.canPerformEditAction(editAction)) { + editorController.performEditAction(editAction); + } + } +} diff --git a/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java b/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java index 83e838914a4f593ab00f4a395743dc9f0cf9c851..28b85c71b53d7888cc287ab637a164a2d8319840 100644 --- a/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java +++ b/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java @@ -36,6 +36,8 @@ import org.eclipse.ui.part.FileEditorInput; import com.oracle.javafx.scenebuilder.kit.editor.EditorController; import com.oracle.javafx.scenebuilder.kit.editor.JobManager; +import com.oracle.javafx.scenebuilder.kit.editor.EditorController.ControlAction; +import com.oracle.javafx.scenebuilder.kit.editor.EditorController.EditAction; import com.oracle.javafx.scenebuilder.kit.editor.job.Job; import com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument; import com.oracle.javafx.scenebuilder.kit.fxom.FXOMObject; @@ -47,6 +49,8 @@ import no.tobask.sb4e.EclipseProjectsClassLoader; import no.tobask.sb4e.EditorWindowController; import no.tobask.sb4e.JavaModelUtils; import no.tobask.sb4e.JavaProjectGlossary; +import no.tobask.sb4e.SceneBuilderControlActionHandler; +import no.tobask.sb4e.SceneBuilderEditActionHandler; public class FXMLEditor extends EditorPart { @@ -58,7 +62,10 @@ public class FXMLEditor extends EditorPart { private IUndoContext undoContext; private IOperationHistory operationHistory; private ICompilationUnit controllerClass; - + private IAction copyHandler; + private IAction cutHandler; + private IAction pasteHandler; + public IAction getUndoActionHandler() { return undoActionHandler; } @@ -67,6 +74,18 @@ public class FXMLEditor extends EditorPart { return redoActionHandler; } + public IAction getCopyHandler() { + return copyHandler; + } + + public IAction getCutHandler() { + return cutHandler; + } + + public IAction getPasteHandler() { + return pasteHandler; + } + public EditorController getEditorController() { return editorController; } @@ -138,6 +157,10 @@ public class FXMLEditor extends EditorPart { } canvas.setScene(editorWindowController.getScene()); editorController.getSelection().revisionProperty().addListener(editorSelectionListener); + + copyHandler = new SceneBuilderControlActionHandler(editorController, ControlAction.COPY); + cutHandler = new SceneBuilderEditActionHandler(editorController, EditAction.CUT); + pasteHandler = new SceneBuilderEditActionHandler(editorController, EditAction.PASTE); } private ChangeListener<Number> editorSelectionListener = (oV, oldNum, newNum) -> { diff --git a/sb4e/src/no/tobask/sb4e/editors/FXMLEditorContributor.java b/sb4e/src/no/tobask/sb4e/editors/FXMLEditorContributor.java index c974e338317b986a841d59eadce576b45d6580d8..baaf2a51bd945b9fbca17399e921615af5f6480f 100644 --- a/sb4e/src/no/tobask/sb4e/editors/FXMLEditorContributor.java +++ b/sb4e/src/no/tobask/sb4e/editors/FXMLEditorContributor.java @@ -1,22 +1,26 @@ package no.tobask.sb4e.editors; +import org.eclipse.ui.IActionBars; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.part.EditorActionBarContributor; public class FXMLEditorContributor extends EditorActionBarContributor { - + public FXMLEditorContributor() { - // TODO Auto-generated constructor stub } @Override public void setActiveEditor(IEditorPart targetEditor) { if (targetEditor instanceof FXMLEditor) { FXMLEditor editor = (FXMLEditor) targetEditor; - getActionBars().setGlobalActionHandler(ActionFactory.UNDO.getId(), editor.getUndoActionHandler()); - getActionBars().setGlobalActionHandler(ActionFactory.REDO.getId(), editor.getRedoActionHandler()); - getActionBars().updateActionBars(); + IActionBars actionBars = getActionBars(); + actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), editor.getUndoActionHandler()); + actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), editor.getRedoActionHandler()); + actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), editor.getCopyHandler()); + actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), editor.getCutHandler()); + actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), editor.getPasteHandler()); + actionBars.updateActionBars(); } }