Jaxx-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
June 2012
- 2 participants
- 38 discussions
r2331 - in trunk: jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor jaxx-demo/src/main/resources/i18n jaxx-widgets/src/main/java/jaxx/runtime/swing/editor jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config
by sletellier@users.nuiton.org 14 Jun '12
by sletellier@users.nuiton.org 14 Jun '12
14 Jun '12
Author: sletellier
Date: 2012-06-14 17:47:32 +0200 (Thu, 14 Jun 2012)
New Revision: 2331
Url: http://nuiton.org/repositories/revision/jaxx/2331
Log:
- fixes #2138 : Use FileEditor to input File in ApplicationConfigUI
- create demo ui
- refs #2137 : improve FileEditor and demo
Modified:
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx
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
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUI.css
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx 2012-06-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx 2012-06-14 15:47:32 UTC (rev 2331)
@@ -28,7 +28,10 @@
<String id='title' javaBean='"Open file"'/>
<String id='exts' javaBean='"txt, png"'/>
- <String id='extsDescription' javaBean='"Text (*.txt), Images (*.png)"'/>
+ <String id='extsDescription' javaBean='"Text (*.txt), Image (*.png)"'/>
+ <Boolean id='acceptAllFileFilterUsed' javaBean='Boolean.TRUE'/>
+ <Boolean id='directoryEnabled' javaBean='Boolean.TRUE'/>
+ <Boolean id='fileEnabled' javaBean='Boolean.FALSE'/>
<Table fill='both'>
<row>
@@ -43,10 +46,31 @@
</row>
<row>
<cell fill='horizontal' weightx='1'>
+ <JLabel text='jaxxdemo.fileEditor.directoryEnabled'/>
+ </cell>
+ <cell fill='horizontal' weightx='1'>
+ <JCheckBox id='directoryEnabledField'
+ selected='{isDirectoryEnabled()}'
+ onActionPerformed='setDirectoryEnabled(directoryEnabledField.isSelected())'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='1'>
+ <JLabel text='jaxxdemo.fileEditor.fileEnabled'/>
+ </cell>
+ <cell fill='horizontal' weightx='1'>
+ <JCheckBox id='fileEnabledField'
+ selected='{isFileEnabled()}'
+ onActionPerformed='setFileEnabled(fileEnabledField.isSelected())'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='1'>
<JLabel text='jaxxdemo.fileEditor.extsLbl'/>
</cell>
<cell fill='horizontal' weightx='1'>
<JTextField id='extsField'
+ enabled='{isFileEnabled()}'
text='{getExts()}'
onKeyReleased='setExts(extsField.getText())'/>
</cell>
@@ -57,15 +81,29 @@
</cell>
<cell fill='horizontal' weightx='1'>
<JTextField id='extsDescriptionField'
+ enabled='{isFileEnabled()}'
text='{getExtsDescription()}'
onKeyReleased='setExtsDescription(extsDescriptionField.getText())'/>
</cell>
</row>
<row>
+ <cell fill='horizontal' weightx='1'>
+ <JLabel text='jaxxdemo.fileEditor.acceptAllFileFilterUsed'/>
+ </cell>
+ <cell fill='horizontal' weightx='1'>
+ <JCheckBox id='acceptAllFileFilterUsedField'
+ selected='{isAcceptAllFileFilterUsed()}'
+ onActionPerformed='setAcceptAllFileFilterUsed(acceptAllFileFilterUsedField.isSelected())'/>
+ </cell>
+ </row>
+ <row>
<cell fill='horizontal' weightx='1' columns='2'>
<FileEditor id='fileChooser'
title='{getTitle()}'
exts='{getExts()}'
+ directoryEnabled='{isDirectoryEnabled()}'
+ fileEnabled='{isFileEnabled()}'
+ acceptAllFileFilterUsed='{isAcceptAllFileFilterUsed()}'
extsDescription='{getExtsDescription()}'/>
</cell>
</row>
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-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-06-14 15:47:32 UTC (rev 2331)
@@ -195,8 +195,11 @@
jaxxdemo.feature.databinding=Data Binding
jaxxdemo.feature.nav=Jaxx nav API
jaxxdemo.feature.validation=Validation
+jaxxdemo.fileEditor.acceptAllFileFilterUsed=Allow all FileFilter
+jaxxdemo.fileEditor.directoryEnabled=Enable directory selection
jaxxdemo.fileEditor.extsDescLbl=Extensions description (separated by comma, ex \: text (*.txt), images (*.png))
jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png)
+jaxxdemo.fileEditor.fileEnabled=Enable file selection
jaxxdemo.fileEditor.titleLbl=Open dialog title
jaxxdemo.fun=Fun
jaxxdemo.i18neditor.configuration=Configuration
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-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-06-14 15:47:32 UTC (rev 2331)
@@ -195,8 +195,11 @@
jaxxdemo.feature.databinding=Data binding
jaxxdemo.feature.nav=API JAXX pour les arbres
jaxxdemo.feature.validation=Validation
+jaxxdemo.fileEditor.acceptAllFileFilterUsed=Accèpte tout les FileFilter
+jaxxdemo.fileEditor.directoryEnabled=Activer la sélection des files
jaxxdemo.fileEditor.extsDescLbl=Description des extensions (séparées par des virgules, ex \: Texte (*.txt), Images (*.png))
jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png)
+jaxxdemo.fileEditor.fileEnabled=Activer la sélection des fichiers
jaxxdemo.fileEditor.titleLbl=Titre du dialog d'ouverture de fichier
jaxxdemo.fun=Fun
jaxxdemo.i18neditor.configuration=Configuration
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-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-06-14 15:47:32 UTC (rev 2331)
@@ -195,8 +195,11 @@
jaxxdemo.feature.databinding=Data binding
jaxxdemo.feature.nav=API JAXX pour les arbres
jaxxdemo.feature.validation=Validation
+jaxxdemo.fileEditor.acceptAllFileFilterUsed=Accèpte tout les FileFilter
+jaxxdemo.fileEditor.directoryEnabled=Activer la sélection des files
jaxxdemo.fileEditor.extsDescLbl=Description des extensions (séparées par des virgules, ex \: Texte (*.txt), Images (*.png))
jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png)
+jaxxdemo.fileEditor.fileEnabled=Activer la sélection des fichiers
jaxxdemo.fileEditor.titleLbl=Titre de la fenêtre de sélection de fichier
jaxxdemo.fun=Fun
jaxxdemo.i18neditor.configuration=Configuration
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx 2012-06-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx 2012-06-14 15:47:32 UTC (rev 2331)
@@ -33,6 +33,10 @@
<Boolean id='acceptAllFileFilterUsed' javaBean='Boolean.TRUE'/>
+ <Boolean id='directoryEnabled' javaBean='Boolean.TRUE'/>
+
+ <Boolean id='fileEnabled' javaBean='Boolean.TRUE'/>
+
<File id='selectedFile' javaBean='null'/>
<File id='startFile' javaBean='null'/>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-06-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-06-14 15:47:32 UTC (rev 2331)
@@ -59,31 +59,61 @@
fc.setDialogTitle(view.getTitle());
fc.setAcceptAllFileFilterUsed(view.getAcceptAllFileFilterUsed());
- String extsAsString = view.getExts();
- if (extsAsString != null) {
+ // TODO sletellier 14/06/2012 : activate multi selection
+// boolean multiSelectionEnabled = view.isMultiSelectionEnabled();
+// fc.setMultiSelectionEnabled(multiSelectionEnabled);
- // extentions can be separted by comma
- String[] exts = extsAsString.split(SEPARATOR_REGEX);
- String[] descs = view.getExtsDescription().split(SEPARATOR_REGEX);
- for (int i = 0;i<exts.length;i++) {
+ // used to enable directory selection
+ boolean directoryEnabled = view.isDirectoryEnabled();
+ if (directoryEnabled) {
+ fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ }
- // use ext if no desc found
- String ext = exts[i];
- String desc = ext;
- if (descs.length > i) {
- desc = descs[i];
- }
+ // used to enable file selection
+ boolean fileEnabled = view.isFileEnabled();
+ if (fileEnabled) {
- fc.addChoosableFileFilter(new ExtentionFileFiler(ext, desc));
+ if (directoryEnabled) {
+
+ // both
+ fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+ } else {
+ fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
}
+ String extsAsString = view.getExts();
+ if (extsAsString != null) {
+
+ // extentions can be separted by comma
+ String[] exts = extsAsString.split(SEPARATOR_REGEX);
+ String[] descs = view.getExtsDescription().split(SEPARATOR_REGEX);
+ for (int i = 0;i<exts.length;i++) {
+
+ // use ext if no desc found
+ String ext = exts[i];
+ String desc = ext;
+ if (descs.length > i) {
+ desc = descs[i];
+ }
+
+ fc.addChoosableFileFilter(new ExtentionFileFiler(ext, desc));
+ }
+ }
}
+ // directory or/and file must be enabled
+ if (!directoryEnabled && !fileEnabled) {
+ throw new IllegalArgumentException("You must enable at least file or directory to open dialog");
+ }
+
// show dialog
- fc.showOpenDialog(view);
+ int returnVal = fc.showOpenDialog(view);
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
- // get selected to display in ui
- File file = fc.getSelectedFile();
- view.setSelectedFile(file);
+ // get selected to display in ui
+ File file = fc.getSelectedFile();
+
+ view.setSelectedFile(file);
+ }
}
public static class ExtentionFileFiler extends FileFilter {
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUI.css
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUI.css 2012-06-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigCategoryUI.css 2012-06-14 15:47:32 UTC (rev 2331)
@@ -50,6 +50,7 @@
rowSelectionAllowed:false;
autoCreateRowSorter:true;
autoResizeMode:{JTable.AUTO_RESIZE_ALL_COLUMNS};
+ rowHeight:25;
}
#reset{
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java 2012-06-14 13:17:44 UTC (rev 2330)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/config/ConfigTableEditor.java 2012-06-14 15:47:32 UTC (rev 2331)
@@ -25,19 +25,20 @@
package jaxx.runtime.swing.editor.config;
-import jaxx.runtime.swing.editor.config.model.ConfigTableModel;
-
+import java.awt.Component;
+import java.io.File;
+import java.util.EventObject;
+import java.util.Locale;
+import javax.swing.AbstractCellEditor;
import javax.swing.DefaultCellEditor;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.TableCellEditor;
-import java.awt.Component;
-import java.util.EventObject;
-import java.util.Locale;
-
import jaxx.runtime.swing.editor.ClassCellEditor;
import jaxx.runtime.swing.editor.EnumEditor;
+import jaxx.runtime.swing.editor.FileEditor;
import jaxx.runtime.swing.editor.LocaleEditor;
+import jaxx.runtime.swing.editor.config.model.ConfigTableModel;
import jaxx.runtime.swing.editor.config.model.OptionModel;
/**
@@ -106,22 +107,25 @@
TableCellEditor editor = table.getDefaultEditor(type);
TableCellEditor defaultEditor = table.getDefaultEditor(Object.class);
//TODO always Search from option.getEditor() and store editor as cache
- if (editor == defaultEditor) {
+ if (editor.equals(defaultEditor)) {
// find not a specialized editor for the type
if (type.isEnum()) {
// add a EnumEditor to table
editor = new DefaultCellEditor(EnumEditor.newEditor((Class<Enum>) type));
table.setDefaultEditor(type, editor);
- } else if (type == Class.class) {
+
+ } else if (type.equals(Class.class)) {
editor = new ClassCellEditor();
table.setDefaultEditor(type, editor);
- } //else if (type == File.class){
- // TODO a FileEditor
- // table.setDefaultEditor(type, delegate);
- //}
- else if (type.equals(Locale.class)) {
+
+ } else if (type.equals(File.class)){
+ editor = new FileCellEditor();
+ table.setDefaultEditor(type, editor);
+
+ } else if (type.equals(Locale.class)) {
editor = new DefaultCellEditor(LocaleEditor.newEditor());
table.setDefaultEditor(Locale.class, editor);
+
} else {
editor = table.getDefaultEditor(String.class);
}
@@ -135,4 +139,25 @@
protected boolean hasDelegate() {
return delegate != null;
}
+
+ protected static class FileCellEditor extends AbstractCellEditor
+ implements TableCellEditor {
+
+ protected FileEditor fileEditor;
+
+ public FileCellEditor() {
+ fileEditor = new FileEditor();
+ }
+
+ @Override
+ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
+ fileEditor.setSelectedFile((File)value);
+ return fileEditor;
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ return fileEditor.getSelectedFile();
+ }
+ }
}
1
0
r2330 - trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor
by sletellier@users.nuiton.org 14 Jun '12
by sletellier@users.nuiton.org 14 Jun '12
14 Jun '12
Author: sletellier
Date: 2012-06-14 15:17:44 +0200 (Thu, 14 Jun 2012)
New Revision: 2330
Url: http://nuiton.org/repositories/revision/jaxx/2330
Log:
Prevent arrayOutOfBoundException
Modified:
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-06-14 13:12:29 UTC (rev 2329)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-06-14 13:17:44 UTC (rev 2330)
@@ -67,7 +67,14 @@
String[] descs = view.getExtsDescription().split(SEPARATOR_REGEX);
for (int i = 0;i<exts.length;i++) {
- fc.addChoosableFileFilter(new ExtentionFileFiler(exts[i], descs[i]));
+ // use ext if no desc found
+ String ext = exts[i];
+ String desc = ext;
+ if (descs.length > i) {
+ desc = descs[i];
+ }
+
+ fc.addChoosableFileFilter(new ExtentionFileFiler(ext, desc));
}
}
1
0
r2329 - in trunk: jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor jaxx-demo/src/main/java/jaxx/demo/tree jaxx-demo/src/main/resources/i18n jaxx-widgets jaxx-widgets/src/main/java/jaxx/runtime/swing/editor jaxx-widgets/src/main/resources/icons
by sletellier@users.nuiton.org 14 Jun '12
by sletellier@users.nuiton.org 14 Jun '12
14 Jun '12
Author: sletellier
Date: 2012-06-14 15:12:29 +0200 (Thu, 14 Jun 2012)
New Revision: 2329
Url: http://nuiton.org/repositories/revision/jaxx/2329
Log:
- fixes #2137 : Add component to choose a file
- add file choose demo ui
- add guava dependency
- add open icon
Added:
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java
trunk/jaxx-widgets/src/main/resources/icons/action-open.png
Modified:
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/DatePickerDemo.jaxx
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
trunk/jaxx-widgets/pom.xml
Modified: 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 2012-06-14 09:50:58 UTC (rev 2328)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/DatePickerDemo.jaxx 2012-06-14 13:12:29 UTC (rev 2329)
@@ -61,7 +61,7 @@
<Table fill='both'>
<row>
- <cell columns='2'>
+ <cell columns='2' fill='horizontal' weightx='1'>
<JCheckBox id='showPopupButton'
text='jaxxdemo.datePickerEditor.showPopupButton'
selected='false'/>
@@ -71,17 +71,14 @@
<cell>
<JLabel text='jaxxdemo.datePickerEditor.patternLayout'/>
</cell>
- <cell>
+ <cell fill='horizontal' weightx='1'>
<JTextField id='patternLayoutField'
text='{patternLayout}'
onFocusLost='setPatternLayout(patternLayoutField.getText())'/>
</cell>
</row>
<row>
- <cell>
- <JLabel text='jaxxdemo.i18neditor.datePicker'/>
- </cell>
- <cell>
+ <cell fill='horizontal' weightx='1' columns='2'>
<JAXXDatePicker id='datePicker'
date='{date}'
patternLayout='{patternLayout}'
@@ -93,7 +90,7 @@
<cell>
<JLabel text='jaxxdemo.datePickerEditor.dateResult'/>
</cell>
- <cell>
+ <cell fill='horizontal' weightx='1'>
<JLabel id='resultView' text='{dateFormat.format(date)}'/>
</cell>
</row>
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FileEditorDemo.jaxx 2012-06-14 13:12:29 UTC (rev 2329)
@@ -0,0 +1,73 @@
+<!--
+ #%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>
+ jaxx.runtime.swing.editor.FileEditor
+ </import>
+
+ <String id='title' javaBean='"Open file"'/>
+ <String id='exts' javaBean='"txt, png"'/>
+ <String id='extsDescription' javaBean='"Text (*.txt), Images (*.png)"'/>
+
+ <Table fill='both'>
+ <row>
+ <cell fill='horizontal' weightx='1'>
+ <JLabel text='jaxxdemo.fileEditor.titleLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1'>
+ <JTextField id='titleField'
+ text='{getTitle()}'
+ onKeyReleased='setTitle(titleField.getText())'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='1'>
+ <JLabel text='jaxxdemo.fileEditor.extsLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1'>
+ <JTextField id='extsField'
+ text='{getExts()}'
+ onKeyReleased='setExts(extsField.getText())'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='1'>
+ <JLabel text='jaxxdemo.fileEditor.extsDescLbl'/>
+ </cell>
+ <cell fill='horizontal' weightx='1'>
+ <JTextField id='extsDescriptionField'
+ text='{getExtsDescription()}'
+ onKeyReleased='setExtsDescription(extsDescriptionField.getText())'/>
+ </cell>
+ </row>
+ <row>
+ <cell fill='horizontal' weightx='1' columns='2'>
+ <FileEditor id='fileChooser'
+ title='{getTitle()}'
+ exts='{getExts()}'
+ extsDescription='{getExtsDescription()}'/>
+ </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-14 09:50:58 UTC (rev 2328)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2012-06-14 13:12:29 UTC (rev 2329)
@@ -33,6 +33,7 @@
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.FileEditorDemo;
import jaxx.demo.component.jaxx.editor.I18nEditorDemo;
import jaxx.demo.component.jaxx.editor.NumberEditorDemo;
import jaxx.demo.component.jaxx.editor.TimeEditorDemo;
@@ -153,7 +154,8 @@
NumberEditorDemo.class,
ComboEditorDemo.class,
I18nEditorDemo.class,
- DatePickerDemo.class
+ DatePickerDemo.class,
+ FileEditorDemo.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-14 09:50:58 UTC (rev 2328)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-06-14 13:12:29 UTC (rev 2329)
@@ -195,6 +195,9 @@
jaxxdemo.feature.databinding=Data Binding
jaxxdemo.feature.nav=Jaxx nav API
jaxxdemo.feature.validation=Validation
+jaxxdemo.fileEditor.extsDescLbl=Extensions description (separated by comma, ex \: text (*.txt), images (*.png))
+jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png)
+jaxxdemo.fileEditor.titleLbl=Open dialog title
jaxxdemo.fun=Fun
jaxxdemo.i18neditor.configuration=Configuration
jaxxdemo.i18neditor.popup.title=Title of popup
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-14 09:50:58 UTC (rev 2328)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-06-14 13:12:29 UTC (rev 2329)
@@ -195,6 +195,9 @@
jaxxdemo.feature.databinding=Data binding
jaxxdemo.feature.nav=API JAXX pour les arbres
jaxxdemo.feature.validation=Validation
+jaxxdemo.fileEditor.extsDescLbl=Description des extensions (séparées par des virgules, ex \: Texte (*.txt), Images (*.png))
+jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png)
+jaxxdemo.fileEditor.titleLbl=Titre du dialog d'ouverture de fichier
jaxxdemo.fun=Fun
jaxxdemo.i18neditor.configuration=Configuration
jaxxdemo.i18neditor.popup.title=Titre de la popup
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-14 09:50:58 UTC (rev 2328)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-06-14 13:12:29 UTC (rev 2329)
@@ -195,6 +195,9 @@
jaxxdemo.feature.databinding=Data binding
jaxxdemo.feature.nav=API JAXX pour les arbres
jaxxdemo.feature.validation=Validation
+jaxxdemo.fileEditor.extsDescLbl=Description des extensions (séparées par des virgules, ex \: Texte (*.txt), Images (*.png))
+jaxxdemo.fileEditor.extsLbl=Extensions (separated by comma, ex \: txt, png)
+jaxxdemo.fileEditor.titleLbl=Titre de la fenêtre de sélection de fichier
jaxxdemo.fun=Fun
jaxxdemo.i18neditor.configuration=Configuration
jaxxdemo.i18neditor.popup.title=Titre de la popup
Modified: trunk/jaxx-widgets/pom.xml
===================================================================
--- trunk/jaxx-widgets/pom.xml 2012-06-14 09:50:58 UTC (rev 2328)
+++ trunk/jaxx-widgets/pom.xml 2012-06-14 13:12:29 UTC (rev 2329)
@@ -67,6 +67,11 @@
</dependency>
<dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx (rev 0)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditor.jaxx 2012-06-14 13:12:29 UTC (rev 2329)
@@ -0,0 +1,84 @@
+<!--
+ #%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%
+ -->
+<Table>
+
+ <import>
+ java.io.File
+ java.beans.PropertyChangeEvent
+ java.beans.PropertyChangeListener
+ </import>
+
+ <FileEditorHandler id='handler' constructorParams='this'/>
+
+ <Boolean id='acceptAllFileFilterUsed' javaBean='Boolean.TRUE'/>
+
+ <File id='selectedFile' javaBean='null'/>
+
+ <File id='startFile' javaBean='null'/>
+
+ <String id='title' javaBean='null'/>
+
+ <String id='exts' javaBean='null'/>
+
+ <String id='extsDescription' javaBean='null'/>
+
+ <script><![CDATA[
+ protected void $afterCompleteSetup() {
+
+ addPropertyChangeListener(PROPERTY_START_FILE, new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (startFile != null) {
+ pathField.setText(startFile.getAbsolutePath());
+ }
+ }
+ });
+
+ addPropertyChangeListener(PROPERTY_SELECTED_FILE, new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (selectedFile != null) {
+ pathField.setText(selectedFile.getAbsolutePath());
+ }
+ }
+ });
+ }
+ ]]></script>
+
+ <row>
+ <cell fill='horizontal' weightx='1'>
+ <JTextField id='pathField'
+ enabled='{isEnabled()}'
+ onFocusLost='setSelectedFile(new File(pathField.getText()))'/>
+ </cell>
+ <cell>
+ <JButton id='boutonXslLocation'
+ enabled='{isEnabled()}'
+ actionIcon='open'
+ onActionPerformed='handler.openLocation()'/>
+ </cell>
+ </row>
+</Table>
\ No newline at end of file
Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java (rev 0)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileEditorHandler.java 2012-06-14 13:12:29 UTC (rev 2329)
@@ -0,0 +1,105 @@
+/*
+ * #%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 jaxx.runtime.swing.editor;
+
+import com.google.common.io.Files;
+import java.io.File;
+import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class FileEditorHandler {
+
+ public static final String SEPARATOR_REGEX = "\\s*,\\s*";
+ protected FileEditor view;
+
+ public FileEditorHandler(FileEditor view) {
+ this.view = view;
+ }
+
+ public void openLocation() {
+
+ // use last selected file
+ File startFile = view.getSelectedFile();
+ if (startFile == null) {
+
+ // else filed start file
+ startFile = view.getStartFile();
+ }
+ if (startFile == null) {
+
+ // else start with user home
+ startFile = new File(System.getProperty("user.home"));
+ }
+ JFileChooser fc = new JFileChooser(startFile);
+
+ fc.setDialogTitle(view.getTitle());
+ fc.setAcceptAllFileFilterUsed(view.getAcceptAllFileFilterUsed());
+
+ String extsAsString = view.getExts();
+ if (extsAsString != null) {
+
+ // extentions can be separted by comma
+ String[] exts = extsAsString.split(SEPARATOR_REGEX);
+ String[] descs = view.getExtsDescription().split(SEPARATOR_REGEX);
+ for (int i = 0;i<exts.length;i++) {
+
+ fc.addChoosableFileFilter(new ExtentionFileFiler(exts[i], descs[i]));
+ }
+ }
+
+ // show dialog
+ fc.showOpenDialog(view);
+
+ // get selected to display in ui
+ File file = fc.getSelectedFile();
+ view.setSelectedFile(file);
+ }
+
+ public static class ExtentionFileFiler extends FileFilter {
+ protected String ext;
+ protected String desciption;
+
+ public ExtentionFileFiler(String ext, String desciption) {
+ this.ext = ext;
+ this.desciption = desciption;
+ }
+
+ @Override
+ public boolean accept(File file) {
+ if (file.isDirectory()) {
+ return true;
+ }
+ String fileExtension = Files.getFileExtension(file.getName());
+ return ext.equals(fileExtension);
+ }
+
+ @Override
+ public String getDescription() {
+ return desciption;
+ }
+ }
+}
Added: trunk/jaxx-widgets/src/main/resources/icons/action-open.png
===================================================================
(Binary files differ)
Property changes on: trunk/jaxx-widgets/src/main/resources/icons/action-open.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
1
0
14 Jun '12
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(a)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;
+ }
+}
1
0
Author: sletellier
Date: 2012-06-08 12:06:10 +0200 (Fri, 08 Jun 2012)
New Revision: 2327
Url: http://nuiton.org/repositories/revision/jaxx/2327
Log:
Revert log4j scope to runtime
Modified:
trunk/jaxx-demo/pom.xml
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2012-06-08 09:52:04 UTC (rev 2326)
+++ trunk/jaxx-demo/pom.xml 2012-06-08 10:06:10 UTC (rev 2327)
@@ -132,6 +132,7 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
+ <scope>runtime</scope>
</dependency>
</dependencies>
1
0
r2326 - in trunk: jaxx-demo jaxx-demo/src/main/java/jaxx/demo jaxx-demo/src/main/resources jaxx-demo/src/main/resources/i18n jaxx-demo/src/main/resources/icons jaxx-widgets/src/main/java/jaxx/runtime/swing/log
by sletellier@users.nuiton.org 08 Jun '12
by sletellier@users.nuiton.org 08 Jun '12
08 Jun '12
Author: sletellier
Date: 2012-06-08 11:52:04 +0200 (Fri, 08 Jun 2012)
New Revision: 2326
Url: http://nuiton.org/repositories/revision/jaxx/2326
Log:
refs #2124 Add ui to display log from log4j appender
Use applicationConfig to specify appender level and pattern to use
Add init method to initialize JAXXLog4jAppender
Added:
trunk/jaxx-demo/src/main/resources/icons/action-reload-log.png
Modified:
trunk/jaxx-demo/pom.xml
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/RunDemo.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
trunk/jaxx-demo/src/main/resources/log4j.properties
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2012-06-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/pom.xml 2012-06-08 09:52:04 UTC (rev 2326)
@@ -132,7 +132,6 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
- <scope>runtime</scope>
</dependency>
</dependencies>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java 2012-06-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoConfig.java 2012-06-08 09:52:04 UTC (rev 2326)
@@ -25,6 +25,11 @@
package jaxx.demo;
+import java.beans.PropertyChangeListener;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Locale;
+import java.util.Properties;
import jaxx.demo.feature.nav.NavDemo;
import jaxx.runtime.JAXXUtil;
import org.apache.commons.logging.Log;
@@ -33,12 +38,6 @@
import org.nuiton.util.Version;
import org.nuiton.util.VersionUtil;
-import java.beans.PropertyChangeListener;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Locale;
-import java.util.Properties;
-
import static org.nuiton.i18n.I18n._;
/**
@@ -66,6 +65,10 @@
public static final String PROPERTY_FONT_SIZE = "fontSize";
+ public static final String PROPERTY_LOG_LEVEL = "logLevel";
+
+ public static final String PROPERTY_LOG_PATTERN_LAYOUT = "logPatternLayout";
+
public DemoConfig() {
setConfigFileName(Option.CONFIG_FILE.defaultValue);
@@ -135,6 +138,16 @@
return result;
}
+ public String getLogLevel() {
+ String level = getOption(Option.LOG_LEVEL.key);
+ return level;
+ }
+
+ public String getLogPatternLayout() {
+ String result = getOption(Option.LOG_PATTERN_LAYOUT.key);
+ return result;
+ }
+
public void setFullscreen(boolean fullscreen) {
Object oldValue = null;
setOption(Option.FULL_SCREEN.key, fullscreen + "");
@@ -155,6 +168,18 @@
firePropertyChange(PROPERTY_FONT_SIZE, oldValue, newFontSize);
}
+ public void setLogLevel(String logLevel) {
+ String oldValue = getLogLevel();
+ setOption(Option.LOG_LEVEL.key, logLevel);
+ firePropertyChange(PROPERTY_LOG_LEVEL, oldValue, logLevel);
+ }
+
+ public void setLogPatternLayout(String logPatternLayout) {
+ String oldValue = getLogPatternLayout();
+ setOption(Option.LOG_PATTERN_LAYOUT.key, logPatternLayout);
+ firePropertyChange(PROPERTY_LOG_PATTERN_LAYOUT, oldValue, logPatternLayout);
+ }
+
/**
* Save configuration, in user home directory using the
* {@link #getConfigFileName}. Default, env and commande line note saved
@@ -225,6 +250,20 @@
Float.class,
false,
false),
+ LOG_LEVEL(
+ "ui." + PROPERTY_LOG_LEVEL,
+ _("jaxxdemo.config.ui.logLevel"),
+ "INFO",
+ String.class,
+ false,
+ false),
+ LOG_PATTERN_LAYOUT(
+ "ui." + PROPERTY_LOG_PATTERN_LAYOUT,
+ _("jaxxdemo.config.ui.logPatternLayout"),
+ "%5p [%t] (%F:%L) %M - %m%n",
+ String.class,
+ false,
+ false),
DEMO_PATH(
"ui.demo.path",
_("jaxxdemo.config.ui.demo.path"),
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2012-06-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2012-06-08 09:52:04 UTC (rev 2326)
@@ -390,6 +390,22 @@
}
};
+ final Runnable reloadLogAppenderCallback = new Runnable() {
+
+ @Override
+ public void run() {
+ if (log.isInfoEnabled()) {
+ log.info("will reload log appender");
+ }
+ DefaultApplicationContext context = RunDemo.get();
+ DemoUI ui = getUI(context);
+ DemoConfig config = ui.getConfig();
+
+ // init jaxx logger
+ JAXXLog4jUI.init(config.getLogLevel(), config.getLogPatternLayout());
+ }
+ };
+
public void showConfig(JAXXContext context) {
DemoUI ui = getUI(context);
DemoConfig config = ui.getConfig();
@@ -406,6 +422,11 @@
SwingUtil.createActionIcon("reload-application"),
reloadApplicationCallback);
+ helper.registerCallBack("log",
+ n_("demo.action.reload.logAppender"),
+ SwingUtil.createActionIcon("reload-log"),
+ reloadLogAppenderCallback);
+
// categorie repertoires
helper.addCategory(n_("jaxxdemo.config.category.directories"),
@@ -429,6 +450,14 @@
helper.setOptionPropertyName(DemoConfig.PROPERTY_LOCALE);
helper.setOptionCallBack("ui");
+ helper.addOption(DemoConfig.Option.LOG_LEVEL);
+ helper.setOptionPropertyName(DemoConfig.PROPERTY_LOG_LEVEL);
+ helper.setOptionCallBack("log");
+
+ helper.addOption(DemoConfig.Option.LOG_PATTERN_LAYOUT);
+ helper.setOptionPropertyName(DemoConfig.PROPERTY_LOG_PATTERN_LAYOUT);
+ helper.setOptionCallBack("log");
+
helper.buildUI(context, "jaxxdemo.config.category.other");
helper.displayUI(ui, false);
@@ -448,7 +477,7 @@
public void showLogs(DemoUI ui) {
- JAXXLog4jUI log4jUI = new JAXXLog4jUI("jaxxDemoAppender");
+ JAXXLog4jUI log4jUI = new JAXXLog4jUI();
String title = _("jaxxdemo.title.showLog");
log4jUI.setTitle(title);
log4jUI.showInDialog(ui, false);
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/RunDemo.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/RunDemo.java 2012-06-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/RunDemo.java 2012-06-08 09:52:04 UTC (rev 2326)
@@ -25,22 +25,22 @@
package jaxx.demo;
+import java.util.Arrays;
+import java.util.Date;
import jaxx.demo.entities.DemoDecoratorProvider;
import jaxx.demo.tree.DemoDataProvider;
import jaxx.demo.tree.DemoTreeHelper;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.context.DefaultApplicationContext;
-import org.nuiton.util.decorator.DecoratorProvider;
import jaxx.runtime.swing.ErrorDialogUI;
+import jaxx.runtime.swing.log.JAXXLog4jUI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.i18n.I18n;
import org.nuiton.i18n.init.DefaultI18nInitializer;
import org.nuiton.util.StringUtil;
+import org.nuiton.util.decorator.DecoratorProvider;
-import java.util.Arrays;
-import java.util.Date;
-
import static org.nuiton.i18n.I18n._;
/** @author tchemit <chemit(a)codelutin.com> */
@@ -103,8 +103,10 @@
log.info(_("jaxxdemo.message.config.loaded", config.getVersion()));
+ // init jaxx logger
+ JAXXLog4jUI.init(config.getLogLevel(), config.getLogPatternLayout());
+
// prepare ui look&feel and load ui properties
-
try {
SwingUtil.initNimbusLoookAndFeel();
} catch (Exception e) {
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-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-06-08 09:52:04 UTC (rev 2326)
@@ -105,6 +105,7 @@
close2=Disable 2
close3=Disable 3
demo.action.reload.application=Reload application
+demo.action.reload.logAppender=
demo.action.reload.ui=Reload UI
edit=Edit
edit2=Edit 2
@@ -185,6 +186,8 @@
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.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-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-06-08 09:52:04 UTC (rev 2326)
@@ -105,6 +105,7 @@
close2=Fermer 2
close3=Fermer 3
demo.action.reload.application=Redemarrer l'application
+demo.action.reload.logAppender=
demo.action.reload.ui=Recharger l'interface graphique
edit=Editer
edit2=Editer 2
@@ -185,6 +186,8 @@
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.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-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-06-08 09:52:04 UTC (rev 2326)
@@ -105,6 +105,7 @@
close2=Fermer 2
close3=Fermer 3
demo.action.reload.application=Redemarrer l'application
+demo.action.reload.logAppender=
demo.action.reload.ui=Recharger l'interface graphique
edit=Editer
edit2=Editer 2
@@ -185,6 +186,8 @@
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.feature=Fonctionnalités
jaxxdemo.feature.databinding=Data binding
jaxxdemo.feature.nav=API JAXX pour les arbres
Added: trunk/jaxx-demo/src/main/resources/icons/action-reload-log.png
===================================================================
(Binary files differ)
Property changes on: trunk/jaxx-demo/src/main/resources/icons/action-reload-log.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/jaxx-demo/src/main/resources/log4j.properties
===================================================================
--- trunk/jaxx-demo/src/main/resources/log4j.properties 2012-06-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-demo/src/main/resources/log4j.properties 2012-06-08 09:52:04 UTC (rev 2326)
@@ -29,11 +29,6 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
-# JAXX output
-log4j.appender.jaxxDemoAppender=jaxx.runtime.swing.log.JAXXLog4jAppender
-log4j.appender.jaxxDemoAppender.layout=org.apache.log4j.PatternLayout
-log4j.appender.jaxxDemoAppender.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
-
log4j.logger.jaxx=INFO
#log4j.logger.jaxx.demo=INFO
log4j.logger.jaxx.demo.tree=DEBUG
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java 2012-06-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java 2012-06-08 09:52:04 UTC (rev 2326)
@@ -39,7 +39,9 @@
import jaxx.runtime.SwingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
/**
* @author sletellier <letellier(a)codelutin.com>
@@ -50,10 +52,36 @@
protected JAXXLog4jUI ui;
+ protected static JAXXLog4jAppender appender;
+
public JAXXLog4jHandler(JAXXLog4jUI ui) {
this.ui = ui;
}
+ /**
+ * Init {@link JAXXLog4jAppender} with level INFO and pattern : %5p [%t] (%F:%L) %M - %m%n
+ */
+ public static void init() {
+ init("INFO", "%5p [%t] (%F:%L) %M - %m%n");
+ }
+
+ /**
+ * Init {@link JAXXLog4jAppender} with specific {@link Level} and {@link PatternLayout}
+ *
+ * @param level specify log4j {@link Level}
+ * @param patternLayout log4j {@link PatternLayout} to display
+ */
+ public static void init(String level, String patternLayout) {
+ Logger logger = Logger.getRootLogger();
+
+ if (appender == null) {
+ appender = new JAXXLog4jAppender();
+ logger.addAppender(appender);
+ }
+ appender.setLevel(Level.toLevel(level));
+ appender.setLayout(new PatternLayout(patternLayout));
+ }
+
final protected Action closeAction = new AbstractAction("close") {
private static final long serialVersionUID = 1L;
@@ -68,16 +96,8 @@
}
};
- public JAXXLog4jAppender getAppender(String appenderName) {
-
- Logger logger = Logger.getRootLogger();
- try {
- JAXXLog4jAppender appender = (JAXXLog4jAppender) logger.getAppender(appenderName);
- return appender;
- } catch (ClassCastException eee) {
- log.error("Appender '" + appenderName + "' must be an jaxx.runtime.swing.log.JAXXLog4jAppender", eee);
- throw eee;
- }
+ public JAXXLog4jAppender getAppender() {
+ return appender;
}
public void showInDialog(Frame ui, boolean undecorated) {
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx 2012-06-06 17:10:47 UTC (rev 2325)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx 2012-06-08 09:52:04 UTC (rev 2326)
@@ -30,12 +30,24 @@
</import>
<script><![CDATA[
- protected String appenderName;
- public JAXXLog4jUI(String appenderName) {
- this.appenderName = appenderName;
+ /**
+ * Init {@link JAXXLog4jAppender} with level INFO and pattern : %5p [%t] (%F:%L) %M - %m%n
+ */
+ public static void init() {
+ JAXXLog4jHandler.init();
}
+ /**
+ * Init {@link JAXXLog4jAppender} with specific {@link Level} and {@link PatternLayout}
+ *
+ * @param level specify log4j {@link Level}
+ * @param patternLayout log4j {@link PatternLayout} to display
+ */
+ public static void init(String level, String patternLayout) {
+ JAXXLog4jHandler.init(level, patternLayout);
+ }
+
public void showInDialog(Frame ui, boolean undecorated) {
handler.showInDialog(ui, undecorated);
}
@@ -45,11 +57,11 @@
<JAXXLog4jHandler id='handler' constructorParams='this'/>
- <JAXXLog4jAppender id='model' initializer='getHandler().getAppender(appenderName)'/>
+ <JAXXLog4jAppender id='model' initializer='getHandler().getAppender()'/>
<JScrollPane constraints='BorderLayout.CENTER'>
- <JTextArea id='logArea'
- text='{model.getLogs()}'/>
+ <JEditorPane id='logArea'
+ text='{model.getLogs()}'/>
</JScrollPane>
<Table constraints='BorderLayout.SOUTH'>
1
0
r2325 - trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing
by sletellier@users.nuiton.org 06 Jun '12
by sletellier@users.nuiton.org 06 Jun '12
06 Jun '12
Author: sletellier
Date: 2012-06-06 19:10:47 +0200 (Wed, 06 Jun 2012)
New Revision: 2325
Url: http://nuiton.org/repositories/revision/jaxx/2325
Log:
fixes #2127 Allow to specify date pattern to display for ClockWidget
Modified:
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/ClockWidget.jaxx
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/ClockWidget.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/ClockWidget.jaxx 2012-06-01 16:15:02 UTC (rev 2324)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/ClockWidget.jaxx 2012-06-06 17:10:47 UTC (rev 2325)
@@ -23,20 +23,38 @@
#L%
-->
-<JLabel implements='java.awt.event.ActionListener'
+<JLabel implements='java.awt.event.ActionListener'
foreground='{Color.BLACK}'
background='{Color.WHITE}'>
-<javax.swing.Timer id='timer' constructorParams='60000,this' />
+ <Integer id='delay' javaBean='60000'/>
+ <String id='pattern' javaBean='"HH:mm"'/>
+
+ <javax.swing.Timer id='timer' delay='{delay}' constructorParams='delay,this'/>
+
<import>
java.awt.Color
java.awt.event.ActionEvent
+ java.text.SimpleDateFormat
java.text.DateFormat
java.util.Date
+ java.beans.PropertyChangeEvent
+ java.beans.PropertyChangeListener
</import>
- <script><![CDATA[
+ <script><![CDATA[
+protected void $afterCompleteSetup() {
+
+ addPropertyChangeListener(PROPERTY_DELAY, new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ timer = new Timer((Integer) evt.getNewValue(), ClockWidget.this);
+ }
+ });
+}
+
@Override
public void actionPerformed(ActionEvent evt) {
update();
@@ -57,8 +75,9 @@
}
protected void update() {
- setText(DateFormat.getTimeInstance(3).format(new Date()));
+ DateFormat format = new SimpleDateFormat(pattern);
+ setText(format.format(new Date()));
}
]]>
- </script>
+ </script>
</JLabel>
1
0
r2324 - in trunk: jaxx-demo/src/main/java/jaxx/demo jaxx-demo/src/main/resources jaxx-demo/src/main/resources/i18n jaxx-widgets jaxx-widgets/src/main/java/jaxx/runtime/swing jaxx-widgets/src/main/java/jaxx/runtime/swing/log
by sletellier@users.nuiton.org 01 Jun '12
by sletellier@users.nuiton.org 01 Jun '12
01 Jun '12
Author: sletellier
Date: 2012-06-01 18:15:02 +0200 (Fri, 01 Jun 2012)
New Revision: 2324
Url: http://nuiton.org/repositories/revision/jaxx/2324
Log:
fixes #2124 : Add ui to display log from log4j appender
Added:
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jAppender.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx
Modified:
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.css
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.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
trunk/jaxx-demo/src/main/resources/log4j.properties
trunk/jaxx-widgets/pom.xml
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.css
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.css 2012-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.css 2012-06-01 16:15:02 UTC (rev 2324)
@@ -112,6 +112,11 @@
_help:{"ui.main.menu.file.exit"};
}
+#menuLogs {
+ text:"jaxxdemo.menu.showLogs";
+ _help:{"ui.main.menu.showLogs"};
+}
+
#menuHelp {
text:"jaxxdemo.menu.help";
mnemonic:e;
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx 2012-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx 2012-06-01 16:15:02 UTC (rev 2324)
@@ -85,6 +85,8 @@
</JMenu>
<JMenu id='menuHelp'>
+ <JMenuItem id='menuLogs'
+ onActionPerformed="getHandler().showLogs(this)"/>
<JMenuItem id='menuHelpHelp'
onActionPerformed="getHandler().showHelp(this, null)"/>
<JMenuItem id='menuHelpSite'
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2012-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2012-06-01 16:15:02 UTC (rev 2324)
@@ -52,6 +52,7 @@
import jaxx.runtime.context.DefaultApplicationContext;
import jaxx.runtime.context.JAXXContextEntryDef;
import jaxx.runtime.context.JAXXInitialContext;
+import jaxx.runtime.swing.log.JAXXLog4jUI;
import org.nuiton.util.decorator.DecoratorProvider;
import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.swing.ErrorDialogUI;
@@ -445,6 +446,14 @@
// mainUI.getHelp().setCurrentID(helpId);
}
+ public void showLogs(DemoUI ui) {
+
+ JAXXLog4jUI log4jUI = new JAXXLog4jUI("jaxxDemoAppender");
+ String title = _("jaxxdemo.title.showLog");
+ log4jUI.setTitle(title);
+ log4jUI.showInDialog(ui, false);
+ }
+
public void gotoSite(JAXXContext context) {
DemoUI ui = getUI(context);
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-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-06-01 16:15:02 UTC (rev 2324)
@@ -204,6 +204,7 @@
jaxxdemo.menu.file=File
jaxxdemo.menu.file.locale=Languages
jaxxdemo.menu.help=
+jaxxdemo.menu.showLogs=Show logs
jaxxdemo.message.config.loaded=Configuration of JAXXDemo v. %1$s loaded.
jaxxdemo.message.goto.site=Go to JAXXDemo Web site
jaxxdemo.navigation.actor.title=Actor
@@ -227,6 +228,7 @@
jaxxdemo.timeeditor.model=Result
jaxxdemo.timeeditor.value=Selected time \: %1$tH\:%1$tM
jaxxdemo.title.about=About JAXXDemo...
+jaxxdemo.title.showLog=JAXXDemo logs
jaxxdemo.tree.tabtitle=Tree
jaxxdemo.treeTable.tabtitle=TreeTable
jaxxdemo.warning.nimbus.landf=Could not init nymbus look and feel, you need at leasr version 1.6u10 of java.
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-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-06-01 16:15:02 UTC (rev 2324)
@@ -204,6 +204,7 @@
jaxxdemo.menu.file=Fichier
jaxxdemo.menu.file.locale=Langues
jaxxdemo.menu.help=Aide
+jaxxdemo.menu.showLogs=Afficher les logs
jaxxdemo.message.config.loaded=Configuration de JAXX Demo v. %1$s chargée.
jaxxdemo.message.goto.site=Accéder au site de JAXX Demo (%1$s)
jaxxdemo.navigation.actor.title=Acteur
@@ -227,6 +228,7 @@
jaxxdemo.timeeditor.model=Résultat
jaxxdemo.timeeditor.value=Heure sélectionnée \: %1$tH\:%1$tM
jaxxdemo.title.about=A propos de JAXX Demo...
+jaxxdemo.title.showLog=Logs de JAXX Demo
jaxxdemo.tree.tabtitle=Arbre
jaxxdemo.treeTable.tabtitle=Arbre tableau
jaxxdemo.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java.
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-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-06-01 16:15:02 UTC (rev 2324)
@@ -204,6 +204,7 @@
jaxxdemo.menu.file=Fichier
jaxxdemo.menu.file.locale=Langues
jaxxdemo.menu.help=Aide
+jaxxdemo.menu.showLogs=Afficher les logs
jaxxdemo.message.config.loaded=Configuration de JAXX Demo v. %1$s chargée.
jaxxdemo.message.goto.site=Accéder au site de JAXX Demo (%1$s)
jaxxdemo.navigation.actor.title=Acteur
@@ -227,6 +228,7 @@
jaxxdemo.timeeditor.model=Résultat
jaxxdemo.timeeditor.value=Heure sélectionnée \: %1$tH\:%1$tM
jaxxdemo.title.about=A propos de JAXX Demo...
+jaxxdemo.title.showLog=Logs de JAXX Demo
jaxxdemo.tree.tabtitle=Arbre
jaxxdemo.treeTable.tabtitle=Arbre tableau
jaxxdemo.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java.
Modified: trunk/jaxx-demo/src/main/resources/log4j.properties
===================================================================
--- trunk/jaxx-demo/src/main/resources/log4j.properties 2012-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-demo/src/main/resources/log4j.properties 2012-06-01 16:15:02 UTC (rev 2324)
@@ -23,12 +23,17 @@
# #L%
###
# Global logging configuration
-log4j.rootLogger=ERROR, stdout
+log4j.rootLogger=ERROR, stdout, jaxxDemoAppender
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
+# JAXX output
+log4j.appender.jaxxDemoAppender=jaxx.runtime.swing.log.JAXXLog4jAppender
+log4j.appender.jaxxDemoAppender.layout=org.apache.log4j.PatternLayout
+log4j.appender.jaxxDemoAppender.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
+
log4j.logger.jaxx=INFO
#log4j.logger.jaxx.demo=INFO
log4j.logger.jaxx.demo.tree=DEBUG
Modified: trunk/jaxx-widgets/pom.xml
===================================================================
--- trunk/jaxx-widgets/pom.xml 2012-05-30 17:46:08 UTC (rev 2323)
+++ trunk/jaxx-widgets/pom.xml 2012-06-01 16:15:02 UTC (rev 2324)
@@ -94,7 +94,6 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
@@ -172,4 +171,4 @@
</plugins>
</build>
-</project>
\ No newline at end of file
+</project>
Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jAppender.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jAppender.java (rev 0)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jAppender.java 2012-06-01 16:15:02 UTC (rev 2324)
@@ -0,0 +1,141 @@
+/*
+ * #%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 jaxx.runtime.swing.log;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.LinkedList;
+import java.util.List;
+import org.apache.log4j.Level;
+import org.apache.log4j.WriterAppender;
+import org.apache.log4j.spi.LoggingEvent;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class JAXXLog4jAppender extends WriterAppender {
+
+ public static final String PROPERTY_LOGS = "logs";
+ public static final String PROPERTY_LEVEL = "level";
+
+ protected List<LoggingEvent> events;
+ protected StringBuilder logs;
+ protected Level level;
+
+ protected final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
+
+ public JAXXLog4jAppender() {
+ events = new LinkedList<LoggingEvent>();
+ logs = new StringBuilder();
+ }
+
+ public String getLogs() {
+ return logs.toString();
+ }
+
+ public void setLogs(String logs) {
+ String oldValue = getLogs();
+ this.logs = new StringBuilder(logs);
+ firePropertyChange(PROPERTY_LOGS, oldValue, logs);
+ }
+
+ public Level getLevel() {
+ if (level == null) {
+ level = Level.ALL;
+ }
+ return level;
+ }
+
+ public void setLevel(Level level) {
+ Level oldValue = getLevel();
+ this.level = level;
+ firePropertyChange(PROPERTY_LEVEL, oldValue, level);
+ updateLogs();
+ }
+
+ @Override
+ public void append(LoggingEvent event) {
+ super.append(event);
+ if (event != null) {
+ events.add(event);
+ updateLog(event);
+ }
+ }
+
+ protected void updateLogs() {
+ String oldValue = getLogs();
+ logs = new StringBuilder();
+ for (LoggingEvent event : events) {
+ updateLog(event);
+ }
+ firePropertyChange(PROPERTY_LOGS, oldValue, getLogs());
+ }
+
+ protected void updateLog(LoggingEvent event) {
+ Level level = event.getLevel();
+ if (getLevel() != null && level.isGreaterOrEqual(getLevel())) {
+ String log = this.layout.format(event);
+ appendLog(log);
+ if(layout.ignoresThrowable()) {
+ String[] errorLogs = event.getThrowableStrRep();
+ if (errorLogs != null) {
+ for (String errorLog : errorLogs) {
+ appendLog(errorLog + "\n");
+ }
+ }
+ }
+ }
+ }
+
+ protected void appendLog(String log) {
+ String oldValue = getLogs();
+ logs.append(log);
+ firePropertyChange(PROPERTY_LOGS, oldValue, getLogs());
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ pcs.addPropertyChangeListener(listener);
+ }
+
+ public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ pcs.addPropertyChangeListener(propertyName, listener);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ pcs.removePropertyChangeListener(listener);
+ }
+
+ public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
+ pcs.removePropertyChangeListener(propertyName, listener);
+ }
+
+ protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
+ pcs.firePropertyChange(propertyName, oldValue, newValue);
+ }
+
+ protected void firePropertyChange(String propertyName, Object newValue) {
+ firePropertyChange(propertyName, null, newValue);
+ }
+}
Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java (rev 0)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jHandler.java 2012-06-01 16:15:02 UTC (rev 2324)
@@ -0,0 +1,106 @@
+/*
+ * #%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 jaxx.runtime.swing.log;
+
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JRootPane;
+import javax.swing.KeyStroke;
+import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.SwingUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.log4j.Logger;
+
+/**
+ * @author sletellier <letellier(a)codelutin.com>
+ */
+public class JAXXLog4jHandler {
+
+ private static final Log log = LogFactory.getLog(JAXXLog4jHandler.class);
+
+ protected JAXXLog4jUI ui;
+
+ public JAXXLog4jHandler(JAXXLog4jUI ui) {
+ this.ui = ui;
+ }
+
+ final protected Action closeAction = new AbstractAction("close") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ JDialog container = ui.getParentContainer(JDialog.class);
+ if (container != null) {
+ container.dispose();
+ } else {
+ ui.setVisible(false);
+ }
+ }
+ };
+
+ public JAXXLog4jAppender getAppender(String appenderName) {
+
+ Logger logger = Logger.getRootLogger();
+ try {
+ JAXXLog4jAppender appender = (JAXXLog4jAppender) logger.getAppender(appenderName);
+ return appender;
+ } catch (ClassCastException eee) {
+ log.error("Appender '" + appenderName + "' must be an jaxx.runtime.swing.log.JAXXLog4jAppender", eee);
+ throw eee;
+ }
+ }
+
+ public void showInDialog(Frame ui, boolean undecorated) {
+ JDialog f = new JDialog(ui, this.ui.getTitle(), false);
+ f.add(this.ui);
+ f.setResizable(true);
+ f.setSize(550, 450);
+ f.setUndecorated(undecorated);
+ JRootPane rootPane = f.getRootPane();
+ rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close");
+ rootPane.getActionMap().put("close", closeAction);
+ f.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosed(WindowEvent e) {
+ Component ui = (Component) e.getSource();
+ if (log.isInfoEnabled()) {
+ log.info("destroy ui " + ui);
+ }
+ JAXXUtil.destroy(ui);
+ JAXXUtil.destroy(JAXXLog4jHandler.this.ui);
+ }
+ });
+ SwingUtil.center(ui, f);
+ f.setVisible(true);
+ }
+}
Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx (rev 0)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/log/JAXXLog4jUI.jaxx 2012-06-01 16:15:02 UTC (rev 2324)
@@ -0,0 +1,109 @@
+<!--
+ #%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%
+ -->
+<JPanel id='log4jUI' layout='{new BorderLayout()}'>
+
+ <import>
+ java.awt.Frame
+ org.apache.log4j.Level
+ </import>
+
+ <script><![CDATA[
+ protected String appenderName;
+
+ public JAXXLog4jUI(String appenderName) {
+ this.appenderName = appenderName;
+ }
+
+ public void showInDialog(Frame ui, boolean undecorated) {
+ handler.showInDialog(ui, undecorated);
+ }
+ ]]></script>
+
+ <String id='title' javaBean='null'/>
+
+ <JAXXLog4jHandler id='handler' constructorParams='this'/>
+
+ <JAXXLog4jAppender id='model' initializer='getHandler().getAppender(appenderName)'/>
+
+ <JScrollPane constraints='BorderLayout.CENTER'>
+ <JTextArea id='logArea'
+ text='{model.getLogs()}'/>
+ </JScrollPane>
+
+ <Table constraints='BorderLayout.SOUTH'>
+ <row>
+ <cell>
+ <JRadioButton id='fatalRadio'
+ buttonGroup="levelRadioGroup"
+ text='{Level.FATAL.toString()}'
+ value='{Level.FATAL}'
+ onActionPerformed='model.setLevel(Level.FATAL)'/>
+ </cell>
+ <cell>
+ <JRadioButton id='errorRadio'
+ buttonGroup="levelRadioGroup"
+ text='{Level.ERROR.toString()}'
+ value='{Level.ERROR}'
+ onActionPerformed='model.setLevel(Level.ERROR)'/>
+ </cell>
+ <cell>
+ <JRadioButton id='warnRadio'
+ buttonGroup="levelRadioGroup"
+ text='{Level.WARN.toString()}'
+ value='{Level.WARN}'
+ onActionPerformed='model.setLevel(Level.WARN)'/>
+ </cell>
+ <cell>
+ <JRadioButton id='infoRadio'
+ buttonGroup="levelRadioGroup"
+ text='{Level.INFO.toString()}'
+ value='{Level.INFO}'
+ onActionPerformed='model.setLevel(Level.INFO)'/>
+ </cell>
+ <cell>
+ <JRadioButton id='debugRadio'
+ buttonGroup="levelRadioGroup"
+ text='{Level.DEBUG.toString()}'
+ value='{Level.DEBUG}'
+ onActionPerformed='model.setLevel(Level.DEBUG)'/>
+ </cell>
+ <cell>
+ <JRadioButton id='traceRadio'
+ buttonGroup="levelRadioGroup"
+ text='{Level.TRACE.toString()}'
+ value='{Level.TRACE}'
+ onActionPerformed='model.setLevel(Level.TRACE)'/>
+ </cell>
+ <cell>
+ <JRadioButton id='allRadio'
+ buttonGroup="levelRadioGroup"
+ text='{Level.ALL.toString()}'
+ value='{Level.ALL}'
+ selected='true'
+ onActionPerformed='model.setLevel(Level.ALL)'/>
+ </cell>
+ </row>
+ </Table>
+</JPanel>
\ No newline at end of file
1
0