[jaxx] branch feature/3368 created (now fbf4a7b)
This is an automated email from the git hooks/post-receive script. New change to branch feature/3368 in repository jaxx. See http://git.nuiton.org/jaxx.git at fbf4a7b refs #3368 introduce ApplicationUIConfiguration + deal with shortcuts This branch includes the following new commits: new fbf4a7b refs #3368 introduce ApplicationUIConfiguration + deal with shortcuts The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit fbf4a7b6b8681a12e40f7bd3360544d1f4338c81 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 22 11:36:13 2014 +0200 refs #3368 introduce ApplicationUIConfiguration + deal with shortcuts -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/3368 in repository jaxx. See http://git.nuiton.org/jaxx.git commit fbf4a7b6b8681a12e40f7bd3360544d1f4338c81 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 22 11:36:13 2014 +0200 refs #3368 introduce ApplicationUIConfiguration + deal with shortcuts --- .../jaxx/application/ApplicationConfiguration.java | 4 ++ .../swing/AbstractApplicationUIHandler.java | 68 +++++++++++++++++++--- .../swing/ApplicationUIConfiguration.java | 21 +++++++ 3 files changed, 84 insertions(+), 9 deletions(-) diff --git a/jaxx-application-api/src/main/java/org/nuiton/jaxx/application/ApplicationConfiguration.java b/jaxx-application-api/src/main/java/org/nuiton/jaxx/application/ApplicationConfiguration.java index 680d795..a43ce9b 100644 --- a/jaxx-application-api/src/main/java/org/nuiton/jaxx/application/ApplicationConfiguration.java +++ b/jaxx-application-api/src/main/java/org/nuiton/jaxx/application/ApplicationConfiguration.java @@ -47,6 +47,10 @@ public abstract class ApplicationConfiguration { public abstract Version getVersion(); + /** + * @deprecated since 2.13, use now {@code org.nuiton.jaxx.application.swing.ApplicationUIConfiguration#getShortcutClosePopup()} + */ + @Deprecated public abstract KeyStroke getShortcutClosePopup(); public ApplicationConfiguration(ApplicationConfig applicationConfig) { diff --git a/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/AbstractApplicationUIHandler.java b/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/AbstractApplicationUIHandler.java index beacb19..02cbd03 100644 --- a/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/AbstractApplicationUIHandler.java +++ b/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/AbstractApplicationUIHandler.java @@ -43,6 +43,7 @@ import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import jaxx.runtime.swing.renderer.DecoratorTableCellRenderer; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXDatePicker; @@ -52,7 +53,9 @@ import org.jdesktop.swingx.autocomplete.ObjectToStringConverter; import org.jdesktop.swingx.table.TableColumnExt; import org.nuiton.decorator.Decorator; import org.nuiton.decorator.JXPathDecorator; +import org.nuiton.jaxx.application.ApplicationConfiguration; import org.nuiton.jaxx.application.ApplicationDataUtil; +import org.nuiton.jaxx.application.bean.JavaBeanObjectUtil; import org.nuiton.jaxx.application.swing.action.AbstractApplicationAction; import org.nuiton.jaxx.application.swing.action.ApplicationActionUI; import org.nuiton.jaxx.application.swing.action.ApplicationUIAction; @@ -235,24 +238,24 @@ public abstract class AbstractApplicationUIHandler<M, UI extends ApplicationUI<M public void setText(KeyEvent event, String property) { JTextComponent field = (JTextComponent) event.getSource(); String value = field.getText(); - ApplicationDataUtil.setProperty(getModel(), property, value); + JavaBeanObjectUtil.setProperty(getModel(), property, value); } public void setFile(ActionEvent event, String property) { FileEditor field = (FileEditor) event.getSource(); File value = field.getSelectedFile(); - ApplicationDataUtil.setProperty(getModel(), property, value); + JavaBeanObjectUtil.setProperty(getModel(), property, value); } public void setBoolean(ItemEvent event, String property) { boolean value = event.getStateChange() == ItemEvent.SELECTED; - ApplicationDataUtil.setProperty(getModel(), property, value); + JavaBeanObjectUtil.setProperty(getModel(), property, value); } public void setDate(ActionEvent event, String property) { JXDatePicker field = (JXDatePicker) event.getSource(); Date value = field.getDate(); - ApplicationDataUtil.setProperty(getModel(), property, value); + JavaBeanObjectUtil.setProperty(getModel(), property, value); } public void selectListData(ListSelectionEvent event, String property) { @@ -268,7 +271,7 @@ public abstract class AbstractApplicationUIHandler<M, UI extends ApplicationUI<M Object o = list.getModel().getElementAt(index); selectedList.add(o); } - ApplicationDataUtil.setProperty(getModel(), property, selectedList); + JavaBeanObjectUtil.setProperty(getModel(), property, selectedList); } finally { selectionModel.setValueIsAdjusting(false); } @@ -618,6 +621,55 @@ public abstract class AbstractApplicationUIHandler<M, UI extends ApplicationUI<M Action action = getContext().getActionFactory().createUIAction(this, abstractButton, actionName); abstractButton.setAction(action); } + + if (abstractButton.getAction() != null) { + // get the _applicationActionKey property + String key = (String) abstractButton.getClientProperty("applicationActionKey"); + if (key != null) { + affectKeyStroke(abstractButton, key); + } + } + } + + protected void affectKeyStroke(AbstractButton abstractButton, String key) { + + if (abstractButton.getAction() == null) { + log.warn("the buton '" + abstractButton.getName() + "' has no action. can't affect key stroke."); + return; + } + + KeyStroke keyStroke = KeyStroke.getKeyStroke(key); + if (keyStroke != null) { + + // affect this key stroke to the button's action + abstractButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, key); + abstractButton.getActionMap().put(key, abstractButton.getAction()); + + boolean modifyText = true; + boolean modifyTip = false; + ApplicationConfiguration configuration = context.getConfiguration(); + if (configuration instanceof ApplicationUIConfiguration) { + ApplicationUIConfiguration applicationUIConfiguration = (ApplicationUIConfiguration) configuration; + + modifyText = applicationUIConfiguration.isShowKeyStrokeOnText(); + modifyTip = applicationUIConfiguration.isShowKeyStrokeOnTip(); + + } + + // modify text + String text = abstractButton.getText(); + if (modifyText && !StringUtils.isBlank(text)) { + text += " (" + key.toUpperCase() + ")"; + abstractButton.setText(text); + } + + // modify tip + String tip = abstractButton.getToolTipText(); + if (modifyTip && !StringUtils.isBlank(tip)) { + tip += " (" + key.toUpperCase() + ")"; + abstractButton.setText(tip); + } + } } /** @@ -653,8 +705,7 @@ public abstract class AbstractApplicationUIHandler<M, UI extends ApplicationUI<M } if (log.isDebugEnabled()) { - log.debug("entity comboBox list [" + beanType.getName() + "] : " + - (data == null ? 0 : data.size())); + log.debug("entity comboBox list [" + beanType.getName() + "] : " + data.size()); } comboBox.setI18nPrefix(getContext().getI18nPrefix()); @@ -695,8 +746,7 @@ public abstract class AbstractApplicationUIHandler<M, UI extends ApplicationUI<M } if (log.isDebugEnabled()) { - log.debug("entity comboBox list [" + beanType.getName() + "] : " + - (data == null ? 0 : data.size())); + log.debug("entity comboBox list [" + beanType.getName() + "] : " + data.size()); } comboBox.setI18nPrefix(getContext().getI18nPrefix()); diff --git a/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/ApplicationUIConfiguration.java b/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/ApplicationUIConfiguration.java new file mode 100644 index 0000000..6202249 --- /dev/null +++ b/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/ApplicationUIConfiguration.java @@ -0,0 +1,21 @@ +package org.nuiton.jaxx.application.swing; + +import javax.swing.KeyStroke; + +/** + * Contract to place on ui configuration. + * + * Created on 9/19/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 2.13 + */ +public interface ApplicationUIConfiguration { + + KeyStroke getShortcutClosePopup(); + + boolean isShowKeyStrokeOnText(); + + boolean isShowKeyStrokeOnTip(); + +} -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm