keyborad shortcuts in text editor
Olivier POTONNIEE <[email protected]> Thu, 08 Jan 2004 15:01:55 +0100
| Newsgroups | gmane.editors.pollo.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------040108060207000907000102
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hello
Here are the changes I made to make missing keyboard shortcuts (save, close, new, open and about) available in text editor. Basically, I extended the EditorPanel class so that it can return Save and Close actions, move the creation of actions inEditorPanelImpl before the creation of the editors, and passed to the text editor the PolloFrame and EditorPanel, so that it could register the missing keybindings.
Hopes this helps.
--
Olivier
PS: I attach both the diff and the changed java files, tell me which you prefer
--------------040108060207000907000102
Content-Type: text/plain;
name="shortcuts.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="shortcuts.diff"
--- EditorPanel.java.orig 2003-09-29 14:55:44.000000000 +0200
+++ EditorPanel.java 2004-01-08 14:22:49.520998400 +0100
@@ -28,4 +28,6 @@
public abstract void refreshUserPreferences();
public abstract Action getCloseAction();
+ public abstract Action getSaveAction();
+ public abstract Action getSaveAsAction();
}
--- EditorPanelImpl.java.orig 2003-10-03 13:06:00.000000000 +0200
+++ EditorPanelImpl.java 2004-01-08 14:46:26.808958400 +0100
@@ -66,8 +66,17 @@
IAttributeEditorPlugin iattributeeditorplugin = viewTypeConf.createAttrEditorPluginChain(xmlModel, ischema, polloFrame);
actionPlugin = viewTypeConf.createActionPlugins(this, polloFrame);
+ // initialize actions
+ saveAction = new SaveAction(xmlModel, polloFrame);
+ if (!xmlModel.isModified())
+ saveAction.setEnabled(false);
+ saveAsAction = new SaveAsAction(xmlModel, polloFrame);
+ closeAction = new CloseAction(xmlModel, polloFrame);
+ closeViewAction = new CloseViewAction(polloFrame, this);
+ closeAllExceptThisAction = new CloseAllExceptThisAction(xmlModel, polloFrame);
+
xmlEditorPanel = new XmlEditorPanel(xmlModel, null, idisplayspecification, ischema, iattributeeditorplugin, forcedTreeType);
- xmlTextEditorPanel = new XmlTextEditorPanel(xmlModel, ischema);
+ xmlTextEditorPanel = new XmlTextEditorPanel(xmlModel, ischema, polloFrame, this);
// no borders
xmlTextEditorPanel.setBorder(BorderFactory.createEmptyBorder());
@@ -82,15 +91,6 @@
else
currentModePanel = xmlEditorPanel;
- // initialize actions
- saveAction = new SaveAction(xmlModel, polloFrame);
- if (!xmlModel.isModified())
- saveAction.setEnabled(false);
- saveAsAction = new SaveAsAction(xmlModel, polloFrame);
- closeAction = new CloseAction(xmlModel, polloFrame);
- closeViewAction = new CloseViewAction(polloFrame, this);
- closeAllExceptThisAction = new CloseAllExceptThisAction(xmlModel, polloFrame);
-
// add the component to the panel
this.setLayout(new BorderLayout());
add(currentModePanel, BorderLayout.CENTER);
@@ -643,4 +643,14 @@
{
return closeViewAction;
}
+
+ public Action getSaveAction()
+ {
+ return saveAction;
+ }
+
+ public Action getSaveAsAction()
+ {
+ return saveAsAction;
+ }
}
--- texteditor/XmlTextEditor.java.orig 2003-01-23 15:24:34.000000000 +0100
+++ texteditor/XmlTextEditor.java 2004-01-08 14:47:01.248480000 +0100
@@ -1,5 +1,7 @@
package org.outerj.pollo.texteditor;
+import org.outerj.pollo.PolloFrame;
+import org.outerj.pollo.EditorPanel;
import org.outerj.pollo.texteditor.action.CopyAction;
import org.outerj.pollo.texteditor.action.CutAction;
import org.outerj.pollo.texteditor.action.PasteAction;
@@ -13,11 +15,14 @@
protected CutAction cutAction;
protected PasteAction pasteAction;
protected FindAction findAction;
+ protected PolloFrame polloFrame;
+ protected EditorPanel editorPanel;
- public XmlTextEditor()
+ public XmlTextEditor(PolloFrame polloFrame, EditorPanel editorPanel)
{
super();
-
+ this.polloFrame = polloFrame;
+ this.editorPanel = editorPanel;
copyAction = new CopyAction(this);
cutAction = new CutAction(this);
pasteAction = new PasteAction(this);
@@ -32,6 +37,11 @@
public void addExtraKeyBindings()
{
InputHandler inputHandler = getInputHandler();
+ inputHandler.addKeyBinding("C+A", polloFrame.getAboutAction());
+ inputHandler.addKeyBinding("C+n", polloFrame.getFileNewAction());
+ inputHandler.addKeyBinding("C+o", polloFrame.getFileOpenAction());
+ inputHandler.addKeyBinding("C+s", editorPanel.getSaveAction());
+ inputHandler.addKeyBinding("C+w", editorPanel.getCloseAction());
inputHandler.addKeyBinding("C+c", copyAction);
inputHandler.addKeyBinding("C+x", cutAction);
inputHandler.addKeyBinding("C+v", pasteAction);
--- texteditor/XmlTextEditorPanel.java.orig 2004-01-08 14:04:21.928358400 +0100
+++ texteditor/XmlTextEditorPanel.java 2004-01-08 14:37:24.659385600 +0100
@@ -1,5 +1,7 @@
package org.outerj.pollo.texteditor;
+import org.outerj.pollo.PolloFrame;
+import org.outerj.pollo.EditorPanel;
import org.outerj.pollo.xmleditor.model.XmlModel;
import org.outerj.pollo.xmleditor.schema.ISchema;
import org.outerj.pollo.xmleditor.Disposable;
@@ -13,9 +15,9 @@
protected XmlTextEditor xmlTextEditor;
protected CheckPanel checkPanel;
- public XmlTextEditorPanel(XmlModel xmlModel, ISchema schema, int i)
+ public XmlTextEditorPanel(XmlModel xmlModel, ISchema schema, PolloFrame polloFrame, EditorPanel editorPanel)
{
- xmlTextEditor = new XmlTextEditor();
+ xmlTextEditor = new XmlTextEditor(polloFrame, editorPanel);
xmlTextEditor.setDocument(xmlModel.getTextDocument());
xmlTextEditor.addExtraKeyBindings();
--------------040108060207000907000102
Content-Type: application/zip;
name="src.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="src.zip"
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
828eYYfG/9nP2FfGVMeVCCfLNwvq1WUeE2exkW0Y0d0cccVZZRy/42k0Sd4k/VAoRqNyQnn/
VMt6ZkcczTldc5Zc5uNBCYHcKrnbdra2JpS7XUc7SLdY7vb9JR91WG88H+s/chjZtn+JVI7u
ektAtzS7a6q7yzXFbtbvLQeNptACwp4uIqvz3KrlnRc2SLdHDVToHyo9WruTWZhbOQOs7uHT
RfkHEMH8jW4Ad3VMdYHeUVUuo3YzHMD1z7NLcAn+A1BLAwQUAAIACACsdCgwHTU3sVsCAACx
BgAAMwAAAG9yZy9vdXRlcmovcG9sbG8vdGV4dGVkaXRvci9YbWxUZXh0RWRpdG9yUGFuZWwu
amF2YY2UTY/aMBCG7/yKuREq5O0d9bCwVN1tu0WFSns1yZCYdezIdiBRtf+9YxLIB6QiQsFJ
xs+8fmfsjIfvPEbQJmY6d2j2LNNSauawcBgJp81sNBJppo27Dlr5+1fDU5wNxixPkBVXKIeD
ilRWyViqI5TsLZU//eCeGTZMMOXseX36v2fGk7CZtnwru7IpgFlesPXj24obi8sixMwJrRoH
9vxAAfYoVMw+zdpvGT86/2qU5VspQggltxZoHRsysuUBeF9VZOGleiSExBSVs9DIGv0dAV2Z
0Q5DKkOXA0X7adYLXSQYvlfs8DIkXaeoStu1quBsuGefBlOoDYXK3yk0xYbsMpxCZ23NeHJK
WK3DXx3N8AUUHrs6gja0DZrdZjCL7kmHufcuOKtmMTofcvkwGZzOo2hZOMO/YzkXKqKK2mBS
++Qvwv/gJXVQ4KXOtYnQ1C/aUMIEHfC0E8sWy9fN8ncb3FSltqGpWNC432H28jWEXrL1rz+b
b3XwR6fkBy0i2OdpttFzjIVStN7gvzXy/i64QbfSVvhdEHweJttEH7t7JrjaRYD9fM062A0A
3kzX3QlU7rp7+mwSnht1a6vc5J0bxhOb5rmD6TuuxwiGfYpOWxyvyA8PsC2Jn+oDFQZ6DXVE
oEKAzenmEu5A0M+qsQOuSpBaxWjaKIM7NKhCOg2I6hKa6rjzGrgR/nyB8Y60WowWmk4wRZrH
IBS8+IQ+8aNB3lo1qcJgqCEpH5cu0XmcAM8yn9jJspEYcknn7hSshmeItP+QUBCkXOX0qRzo
virrq3ZiVzaGfoz+AVBLAQIWCxQAAgAIANlyKDBvGU6URgEAAFMDAAAhAAAAAAAAAAEAIACA
gQAAAABvcmcvb3V0ZXJqL3BvbGxvL0VkaXRvclBhbmVsLmphdmFQSwECFgsUAAIACADNdSgw
4jsuiNwRAAAqagAAJQAAAAAAAAABACAAgIGFAQAAb3JnL291dGVyai9wb2xsby9FZGl0b3JQ
YW5lbEltcGwuamF2YVBLAQIWCxQAAgAIAOF1KDBlELkYVQIAAPsIAAAuAAAAAAAAAAEAIACA
gaQTAABvcmcvb3V0ZXJqL3BvbGxvL3RleHRlZGl0b3IvWG1sVGV4dEVkaXRvci5qYXZhUEsB
AhYLFAACAAgArHQoMB01N7FbAgAAsQYAADMAAAAAAAAAAQAgAICBRRYAAG9yZy9vdXRlcmov
cG9sbG8vdGV4dGVkaXRvci9YbWxUZXh0RWRpdG9yUGFuZWwuamF2YVBLBQYAAAAABAAEAF8B
AADxGAAAAAA=
--------------040108060207000907000102--
-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html