Author: sletellier Date: 2012-06-14 11:50:58 +0200 (Thu, 14 Jun 2012) New Revision: 2328 Url: http://nuiton.org/repositories/revision/jaxx/2328 Log: - fixes #2136 : Create component extend JXDatePicker to hide popup button and allow input time - create ui in demo - fixe translations Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/DatePickerDemo.jaxx trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXDatePicker.jaxx trunk/jaxx-widgets/src/main/java/org/ trunk/jaxx-widgets/src/main/java/org/jdesktop/ trunk/jaxx-widgets/src/main/java/org/jdesktop/swingx/ trunk/jaxx-widgets/src/main/java/org/jdesktop/swingx/plaf/ trunk/jaxx-widgets/src/main/java/org/jdesktop/swingx/plaf/basic/ trunk/jaxx-widgets/src/main/java/org/jdesktop/swingx/plaf/basic/ExtendedBasicDatePickerUI.java Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/DatePickerDemo.jaxx =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/DatePickerDemo.jaxx (rev 0) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/DatePickerDemo.jaxx 2012-06-14 09:50:58 UTC (rev 2328) @@ -0,0 +1,101 @@ +<!-- + #%L + JAXX :: Demo + $Id:$ + $HeadURL:$ + %% + Copyright (C) 2008 - 2012 CodeLutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> +<jaxx.demo.DemoPanel> + + <import> + java.beans.PropertyChangeEvent + java.beans.PropertyChangeListener + java.text.SimpleDateFormat + java.util.Date + </import> + + <String id='patternLayout' javaBean='"dd/MM/yyyy HH:mm:ss"'/> + + <SimpleDateFormat id='dateFormat' constructorParams='patternLayout'/> + + <Date id='date' javaBean='new Date()'/> + + <script><![CDATA[ + protected void $afterCompleteSetup() { + + addPropertyChangeListener(PROPERTY_PATTERN_LAYOUT, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + dateFormat = new SimpleDateFormat(patternLayout); + datePicker.setPatternLayout(patternLayout); + resultView.setText(dateFormat.format(date)); + } + }); + + addPropertyChangeListener(PROPERTY_DATE, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + resultView.setText(dateFormat.format(date)); + } + }); + } + ]]></script> + + <Table fill='both'> + <row> + <cell columns='2'> + <JCheckBox id='showPopupButton' + text='jaxxdemo.datePickerEditor.showPopupButton' + selected='false'/> + </cell> + </row> + <row> + <cell> + <JLabel text='jaxxdemo.datePickerEditor.patternLayout'/> + </cell> + <cell> + <JTextField id='patternLayoutField' + text='{patternLayout}' + onFocusLost='setPatternLayout(patternLayoutField.getText())'/> + </cell> + </row> + <row> + <cell> + <JLabel text='jaxxdemo.i18neditor.datePicker'/> + </cell> + <cell> + <JAXXDatePicker id='datePicker' + date='{date}' + patternLayout='{patternLayout}' + showPopupButton='{showPopupButton.isSelected()}' + onActionPerformed='setDate(datePicker.getDate())'/> + </cell> + </row> + <row> + <cell> + <JLabel text='jaxxdemo.datePickerEditor.dateResult'/> + </cell> + <cell> + <JLabel id='resultView' text='{dateFormat.format(date)}'/> + </cell> + </row> + </Table> +</jaxx.demo.DemoPanel> Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2012-06-08 10:06:10 UTC (rev 2327) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2012-06-14 09:50:58 UTC (rev 2328) @@ -25,9 +25,14 @@ package jaxx.demo.tree; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import jaxx.demo.component.jaxx.BoxedDecoratorDemo; import jaxx.demo.component.jaxx.StatusMessagePanelDemo; import jaxx.demo.component.jaxx.editor.ComboEditorDemo; +import jaxx.demo.component.jaxx.editor.DatePickerDemo; import jaxx.demo.component.jaxx.editor.I18nEditorDemo; import jaxx.demo.component.jaxx.editor.NumberEditorDemo; import jaxx.demo.component.jaxx.editor.TimeEditorDemo; @@ -61,11 +66,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import static org.nuiton.i18n.I18n.n_; /** @@ -152,7 +152,8 @@ TimeEditorDemo.class, NumberEditorDemo.class, ComboEditorDemo.class, - I18nEditorDemo.class + I18nEditorDemo.class, + DatePickerDemo.class ); addMapping(n_("jaxxdemo.feature"), Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-06-08 10:06:10 UTC (rev 2327) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-06-14 09:50:58 UTC (rev 2328) @@ -186,8 +186,11 @@ jaxxdemo.config.ui.fontSize=default font size to use in sources jaxxdemo.config.ui.fullscreen=To change the screen mode (true for full screen) jaxxdemo.config.ui.locale=Language used in application -jaxxdemo.config.ui.logLevel= -jaxxdemo.config.ui.logPatternLayout= +jaxxdemo.config.ui.logLevel=Log level +jaxxdemo.config.ui.logPatternLayout=Log pattern +jaxxdemo.datePickerEditor.dateResult=Result display +jaxxdemo.datePickerEditor.patternLayout=Date pattern +jaxxdemo.datePickerEditor.showPopupButton=Display popup button jaxxdemo.feature=Features jaxxdemo.feature.databinding=Data Binding jaxxdemo.feature.nav=Jaxx nav API Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-06-08 10:06:10 UTC (rev 2327) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-06-14 09:50:58 UTC (rev 2328) @@ -186,8 +186,11 @@ jaxxdemo.config.ui.fontSize=La taille de la police à utiliser pour visualiser dans les sources jaxxdemo.config.ui.fullscreen=Pour afficher l'aplication en mode pleine écran jaxxdemo.config.ui.locale=La langue utilisée par l'application -jaxxdemo.config.ui.logLevel= -jaxxdemo.config.ui.logPatternLayout= +jaxxdemo.config.ui.logLevel=Level de log +jaxxdemo.config.ui.logPatternLayout=Pattern des log +jaxxdemo.datePickerEditor.dateResult=Affichage du résultat +jaxxdemo.datePickerEditor.patternLayout=Pattern de date +jaxxdemo.datePickerEditor.showPopupButton=Afficher le boutton pour ouvrir la popup jaxxdemo.feature=Fonctionnalités jaxxdemo.feature.databinding=Data binding jaxxdemo.feature.nav=API JAXX pour les arbres Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-06-08 10:06:10 UTC (rev 2327) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-06-14 09:50:58 UTC (rev 2328) @@ -186,8 +186,11 @@ jaxxdemo.config.ui.fontSize=La taille de la police à utiliser pour visualiser dans les sources jaxxdemo.config.ui.fullscreen=Pour afficher l'aplication en mode pleine écran jaxxdemo.config.ui.locale=La langue utilisée par l'application -jaxxdemo.config.ui.logLevel= -jaxxdemo.config.ui.logPatternLayout= +jaxxdemo.config.ui.logLevel=Level de log +jaxxdemo.config.ui.logPatternLayout=Pattern des log +jaxxdemo.datePickerEditor.dateResult=Affichage du résultat +jaxxdemo.datePickerEditor.patternLayout=Pattern de date +jaxxdemo.datePickerEditor.showPopupButton=Afficher le boutton pour ouvrir la popup jaxxdemo.feature=Fonctionnalités jaxxdemo.feature.databinding=Data binding jaxxdemo.feature.nav=API JAXX pour les arbres Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXDatePicker.jaxx =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXDatePicker.jaxx (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXDatePicker.jaxx 2012-06-14 09:50:58 UTC (rev 2328) @@ -0,0 +1,61 @@ +<!-- + #%L + JAXX :: Widgets + $Id:$ + $HeadURL:$ + %% + Copyright (C) 2008 - 2012 CodeLutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> +<org.jdesktop.swingx.JXDatePicker> + + <import> + java.beans.PropertyChangeEvent + java.beans.PropertyChangeListener + org.jdesktop.swingx.plaf.basic.ExtendedBasicDatePickerUI + java.text.SimpleDateFormat + </import> + + <Boolean id='showPopupButton' javaBean='Boolean.TRUE'/> + + <String id='patternLayout' javaBean='"dd/MM/yyyy"'/> + + <ExtendedBasicDatePickerUI id='extendedUI' showPopupButton='{showPopupButton}'/> + + <script><![CDATA[ + protected void $afterCompleteSetup() { + + setUI(extendedUI); + + addPropertyChangeListener(PROPERTY_SHOW_POPUP_BUTTON, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + extendedUI.setShowPopupButton((Boolean) evt.getNewValue()); + } + }); + + addPropertyChangeListener(PROPERTY_PATTERN_LAYOUT, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + setFormats(new SimpleDateFormat((String) evt.getNewValue())); + } + }); + } + ]]></script> +</org.jdesktop.swingx.JXDatePicker> \ No newline at end of file Added: trunk/jaxx-widgets/src/main/java/org/jdesktop/swingx/plaf/basic/ExtendedBasicDatePickerUI.java =================================================================== --- trunk/jaxx-widgets/src/main/java/org/jdesktop/swingx/plaf/basic/ExtendedBasicDatePickerUI.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/org/jdesktop/swingx/plaf/basic/ExtendedBasicDatePickerUI.java 2012-06-14 09:50:58 UTC (rev 2328) @@ -0,0 +1,91 @@ +/* + * #%L + * JAXX :: Widgets + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package org.jdesktop.swingx.plaf.basic; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.beans.PropertyVetoException; +import java.util.Date; +import javax.swing.JButton; + +/** + * @author sletellier <letellier@codelutin.com> + */ +public class ExtendedBasicDatePickerUI extends BasicDatePickerUI { + + public static final String PROPERTY_SHOW_POPUP_BUTTON = "showPopupButton"; + + protected JButton popupButton; + protected PropertyChangeSupport p; + protected boolean showPopupButton; + + public ExtendedBasicDatePickerUI() { + p = new PropertyChangeSupport(this); + p.addPropertyChangeListener(PROPERTY_SHOW_POPUP_BUTTON, new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent evt) { + + // dont do this on init + if (datePicker != null) { + installComponents(); + installListeners(); + } + } + }); + } + + public boolean isShowPopupButton() { + return showPopupButton; + } + + public void setShowPopupButton(boolean showPopupButton) { + boolean oldValue = isShowPopupButton(); + this.showPopupButton = showPopupButton; + p.firePropertyChange("showPopupButton", oldValue, showPopupButton); + } + + @Override + protected JButton createPopupButton() { + + if (datePicker != null && popupButton != null) { + datePicker.remove(popupButton); + } + if (isShowPopupButton()) { + popupButton = super.createPopupButton(); + return popupButton; + } + return null; + } + + @Override + public Date getSelectableDate(Date date) throws PropertyVetoException { + if (date == null) { + // one place to interrupt the update spiral + throw new PropertyVetoException("date not selectable", null); + } + return date; + } +}