ref #6596 Replace CTRL+S keybinding with our own binding
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 27 Jun 2017 12:32:37 +0000 (14:32 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 27 Jun 2017 12:32:51 +0000 (14:32 +0200)
 - this is done via model processors
 - this allows to use our SaveHandler to handle all save events

eu.etaxonomy.taxeditor.workbench/fragment.e4xmi
eu.etaxonomy.taxeditor.workbench/plugin.xml
eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/WorkbenchProcessor.java [new file with mode: 0644]

index f9f2982160b72abd55bfa83ebc2be6bf0adc3f41..eed7cb39c2a63221f9f1dd1994e313fc9a35be7c 100644 (file)
@@ -87,7 +87,6 @@
     <elements xsi:type="commands:Command" xmi:id="_CYHrgB62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.export" commandName="%command.label.4"/>
     <elements xsi:type="commands:Command" xmi:id="_LVTo8B62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.close" commandName="%command.label"/>
     <elements xsi:type="commands:Command" xmi:id="_MrLPsB62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.closeAll" commandName="%command.label.0"/>
     <elements xsi:type="commands:Command" xmi:id="_CYHrgB62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.export" commandName="%command.label.4"/>
     <elements xsi:type="commands:Command" xmi:id="_LVTo8B62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.close" commandName="%command.label"/>
     <elements xsi:type="commands:Command" xmi:id="_MrLPsB62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.closeAll" commandName="%command.label.0"/>
-    <elements xsi:type="commands:Command" xmi:id="_PkWcQB62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.save" commandName="%command.label.1"/>
     <elements xsi:type="commands:Command" xmi:id="_X-56IFp0Eee4PsIXei-TMg" elementId="eu.etaxonomy.taxeditor.workbench.save" commandName="%command.label.1"/>
     <elements xsi:type="commands:Command" xmi:id="_RWLmQB62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.saveAll" commandName="%command.label.2"/>
     <elements xsi:type="commands:Command" xmi:id="_TvLd8B62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.exit" commandName="%command.label.5"/>
     <elements xsi:type="commands:Command" xmi:id="_X-56IFp0Eee4PsIXei-TMg" elementId="eu.etaxonomy.taxeditor.workbench.save" commandName="%command.label.1"/>
     <elements xsi:type="commands:Command" xmi:id="_RWLmQB62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.saveAll" commandName="%command.label.2"/>
     <elements xsi:type="commands:Command" xmi:id="_TvLd8B62EeePLJ5to5QrXQ" elementId="org.eclipse.ui.file.exit" commandName="%command.label.5"/>
     <elements xsi:type="commands:Handler" xmi:id="_2fnUYCZ0EeeQLpuomSmVoQ" elementId="eu.etaxonomy.taxeditor.workbench.OpenPartHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.OpenPartHandler" command="_hMjgECZsEeer_rabtodzWA"/>
     <elements xsi:type="commands:Handler" xmi:id="_dBGosFp0Eee4PsIXei-TMg" elementId="eu.etaxonomy.taxeditor.workbench.SaveHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.SaveHandler" command="_X-56IFp0Eee4PsIXei-TMg"/>
   </fragments>
     <elements xsi:type="commands:Handler" xmi:id="_2fnUYCZ0EeeQLpuomSmVoQ" elementId="eu.etaxonomy.taxeditor.workbench.OpenPartHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.OpenPartHandler" command="_hMjgECZsEeer_rabtodzWA"/>
     <elements xsi:type="commands:Handler" xmi:id="_dBGosFp0Eee4PsIXei-TMg" elementId="eu.etaxonomy.taxeditor.workbench.SaveHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.workbench/eu.etaxonomy.taxeditor.workbench.SaveHandler" command="_X-56IFp0Eee4PsIXei-TMg"/>
   </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_Z4f0kFsaEeebk7BsM35KOg" featurename="children" parentElementId="org.eclipse.ui.contexts.dialogAndWindow">
+    <elements xsi:type="commands:BindingContext" xmi:id="_5pEDMFsaEeebk7BsM35KOg" elementId="eu.etaxonomy.taxeditor.workbench.bindingcontext" name="Taxonomic Editor Keybinding Context"/>
+  </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_9BSjQFsaEeebk7BsM35KOg" featurename="bindingTables" parentElementId="org.eclipse.e4.legacy.ide.application">
+    <elements xsi:type="commands:BindingTable" xmi:id="_-q2iEFsaEeebk7BsM35KOg" elementId="eu.etaxonomy.taxeditor.workbench.bindingtable" bindingContext="_5pEDMFsaEeebk7BsM35KOg">
+      <bindings xmi:id="__6bTkFsaEeebk7BsM35KOg" elementId="eu.etaxonomy.taxeditor.workbench.keybinding.save" keySequence="M1+S" command="_X-56IFp0Eee4PsIXei-TMg"/>
+    </elements>
+  </fragments>
 </fragment:ModelFragments>
 </fragment:ModelFragments>
index 45b80bdf05f7fd3acc8a3ae4831a410e3cbefc5a..7600f4a5ba75b8b28b041d518d54693a939efb9f 100644 (file)
@@ -9,6 +9,17 @@
             apply="always"
             uri="fragment.e4xmi">
       </fragment>
             apply="always"
             uri="fragment.e4xmi">
       </fragment>
+      <processor
+            apply="always"
+            beforefragment="false"
+            class="eu.etaxonomy.taxeditor.workbench.WorkbenchProcessor">
+         <element
+               id="org.eclipse.ui.contexts.window">
+         </element>
+         <element
+               id="eu.etaxonomy.taxeditor.workbench.keybinding.save">
+         </element>
+      </processor>
    </extension>
 
 </plugin>
    </extension>
 
 </plugin>
diff --git a/eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/WorkbenchProcessor.java b/eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/WorkbenchProcessor.java
new file mode 100644 (file)
index 0000000..b52408b
--- /dev/null
@@ -0,0 +1,41 @@
+package eu.etaxonomy.taxeditor.workbench;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+
+public class WorkbenchProcessor {
+
+    @Inject
+    @Named("org.eclipse.ui.contexts.window")
+    private MBindingTable bindingTable;
+
+    @Inject
+    @Named("eu.etaxonomy.taxeditor.workbench.keybinding.save")
+    private MKeyBinding saveBinding;
+
+
+    @Execute
+    public void execute() {
+        //swap legacy CTRL+S with the one defined in our model fragment
+        //to allow using our SaveHandler for all save actions
+        List<MKeyBinding> bindings = bindingTable.getBindings();
+        MKeyBinding legacySaveBinding = null;
+        for (MKeyBinding mKeyBinding : bindings) {
+            String keySequence = mKeyBinding.getKeySequence();
+            if(keySequence.equals("CTRL+S")){
+                legacySaveBinding = mKeyBinding;
+                break;
+            }
+        }
+        if(legacySaveBinding!=null){
+            bindings.remove(legacySaveBinding);
+        }
+        bindings.add(saveBinding);
+    }
+}