diff --git a/sb4e/META-INF/MANIFEST.MF b/sb4e/META-INF/MANIFEST.MF index c8f2577c4b3b101a5ffec29eacc3d8218d607d93..d8eaf2c9f51c74ac5e818bdf47ea1df8f08b30ce 100644 --- a/sb4e/META-INF/MANIFEST.MF +++ b/sb4e/META-INF/MANIFEST.MF @@ -8,7 +8,8 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui;bundle-version="3.109.0", org.eclipse.ui.ide;bundle-version="3.13.0", com.oracle.javafx.scenebuilder;bundle-version="8.0.0", - org.eclipse.e4.tools.compat;bundle-version="4.7.0" + org.eclipse.e4.tools.compat;bundle-version="4.7.0", + org.eclipse.core.resources Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: com.oracle.javafx.scenebuilder.app.selectionbar, com.oracle.javafx.scenebuilder.kit.editor, diff --git a/sb4e/plugin.xml b/sb4e/plugin.xml index e81cf243d8ac8beafb49b5e9f1e4db7b7da6554c..0ab2b4c17323c2e7559b6a718368f92bb98af3aa 100644 --- a/sb4e/plugin.xml +++ b/sb4e/plugin.xml @@ -27,5 +27,58 @@ name="Scene Builder"> </category> </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:org.eclipse.ui.popup.any?after=group.open"> + <command + commandId="no.tobask.sb4e.includefxml" + label="Include in opened document" + style="push"> + <visibleWhen> + <and> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false" + operator="and"> + <adapt + type="org.eclipse.core.resources.IFile"> + <test + property="org.eclipse.core.resources.name" + value="*.fxml"> + </test> + </adapt> + </iterate> + <count + value="1"> + </count> + </with> + <with + variable="activeEditorId"> + <equals + value="sb4e.editors.FXMLEditor"> + </equals> + </with> + </and> + </visibleWhen> + </command> + </menuContribution> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + id="no.tobask.sb4e.includefxml" + name="Include fxml"> + </command> + </extension> + <extension + point="org.eclipse.ui.handlers"> + <handler + commandId="no.tobask.sb4e.includefxml" + class="no.tobask.sb4e.handlers.IncludeFxmlHandler"> + </handler> + </extension> </plugin> diff --git a/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java b/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java index b315d00849332a7b85e4d4c26bbc6f10788634eb..dc6d356fb5bc3103cce327035a31a8f303136c24 100644 --- a/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java +++ b/sb4e/src/no/tobask/sb4e/editors/FXMLEditor.java @@ -159,6 +159,7 @@ public class FXMLEditor extends EditorPart { } catch (IOException e) { e.printStackTrace(); } + editorController.startFileWatching(); String controllerName = editorController.getFxomDocument().getFxomRoot().getFxController(); editorController.setGlossary(new JavaProjectGlossary(controllerName, fxmlUrl, editorWindowController.infoPanelController)); diff --git a/sb4e/src/no/tobask/sb4e/handlers/IncludeFxmlHandler.java b/sb4e/src/no/tobask/sb4e/handlers/IncludeFxmlHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..d40750efa441f173d346c173938cd9fe44948439 --- /dev/null +++ b/sb4e/src/no/tobask/sb4e/handlers/IncludeFxmlHandler.java @@ -0,0 +1,68 @@ +package no.tobask.sb4e.handlers; + +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.IHandler; +import org.eclipse.core.commands.IHandlerListener; +import org.eclipse.core.internal.resources.File; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.IPath; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TreePath; +import org.eclipse.jface.viewers.TreeSelection; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.handlers.HandlerUtil; + +import com.oracle.javafx.scenebuilder.app.DocumentWindowController.DocumentEditAction; +import com.oracle.javafx.scenebuilder.kit.editor.EditorController; +import com.oracle.javafx.scenebuilder.kit.editor.EditorController.EditAction; + +import no.tobask.sb4e.editors.FXMLEditor; + +public class IncludeFxmlHandler implements IHandler { + + @Override + public void addHandlerListener(IHandlerListener handlerListener) { + // TODO Auto-generated method stub + + } + + @Override + public void dispose() { + // TODO Auto-generated method stub + + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ISelection menuSelection = HandlerUtil.getActiveMenuSelection(event); + if (menuSelection instanceof IStructuredSelection) { + IStructuredSelection treeSelection = (IStructuredSelection) menuSelection; + IFile selectedFile = (IFile) treeSelection.getFirstElement(); + IEditorPart activeEditor = HandlerUtil.getActiveEditor(event); + if (activeEditor instanceof FXMLEditor) { + EditorController editorController = ((FXMLEditor) activeEditor).getEditorController(); + editorController.performIncludeFxml(selectedFile.getLocation().toFile()); + } + } + return null; + } + + @Override + public boolean isEnabled() { + return true; + } + + @Override + public boolean isHandled() { + return true; + } + + @Override + public void removeHandlerListener(IHandlerListener handlerListener) { + // TODO Auto-generated method stub + + } + +}