r2072 - in trunk/jaxx-demo/src/main: java/jaxx/demo/feature/nav java/jaxx/demo/feature/nav/content java/jaxx/demo/feature/nav/tree java/jaxx/demo/feature/nav/treetable resources/i18n
Author: tchemit Date: 2010-09-07 12:46:24 +0200 (Tue, 07 Sep 2010) New Revision: 2072 Url: http://nuiton.org/repositories/revision/jaxx/2072 Log: improve nav demo (no script, i18n, optimize code, use BeanListHeader, ...) Added: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoDataProvider.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/ActorsTreeNodeLoador.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/MoviesTreeNodeLoador.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeCellRenderer.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeHelper.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/ActorsTreeTableNodeLoador.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/MoviesTreeTableNodeLoador.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableHelper.java trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableModel.java trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo-en_GB.properties trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo-fr_FR.properties Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx 2010-09-07 10:46:24 UTC (rev 2072) @@ -31,6 +31,7 @@ jaxx.demo.entities.* jaxx.runtime.decorator.DecoratorProvider jaxx.runtime.swing.nav.NavNode + jaxx.runtime.swing.editor.bean.BeanListHeader org.jdesktop.swingx.JXTreeTable javax.swing.tree.TreePath @@ -46,11 +47,15 @@ <NavDemoTreeTableHelper id='treeTableHelper' constructorParams='getDataProvider()'/> + <NavDemoHandler id='handler' constructorParams='this'/> + <script><![CDATA[ @Override protected String[] getSources() { return new String[]{ getDefaultSource(), + "NavDemoHandler.java", + "NavDemoDataProvider.java", "tree/NavDemoTreeNode.java", "tree/NavDemoTreeHelper.java", "tree/NavDemoTreeCellRenderer.java", @@ -64,155 +69,8 @@ } private void $afterCompleteSetup() { - setContextValue(treeHelper, "treeHelper"); - setContextValue(treeTableHelper, "treeTableHelper"); - - // Creation of selection listener to open ui when tree selection change - TreeSelectionListener treeSelectionListener = new TreeSelectionListener() { - @Override - public void valueChanged(TreeSelectionEvent event) { - TreePath path = event.getPath(); - NavDemoTreeNode demoNode = (NavDemoTreeNode) path.getLastPathComponent(); - - if (log.isDebugEnabled()) { - log.debug("Select demoNode " + demoNode); - } - - // Do nothing for root - if (demoNode.isRoot()) { - return; - } - openUI(demoNode); - } - }; - - // Creation of selection listener to open ui when tree selection change - TreeSelectionListener treeTableSelectionListener = new TreeSelectionListener() { - @Override - public void valueChanged(TreeSelectionEvent event) { - TreePath path = event.getPath(); - NavDemoTreeTableNode demoNode = (NavDemoTreeTableNode) path.getLastPathComponent(); - - if (log.isDebugEnabled()) { - log.debug("Select demoNode " + demoNode); - } - - // Do nothing for root - if (demoNode.isRoot()) { - return; - } - openUI(demoNode); - } - }; - - // Register decorator - DecoratorProvider decoratorProvider = getContextValue(DecoratorProvider.class); - - // Attach renderer - navigationTree.setCellRenderer(new NavDemoTreeCellRenderer(decoratorProvider, dataProvider)); - - // Register tree - treeHelper.setUI(navigationTree, true, treeSelectionListener); - - // Register tree table - treeTableHelper.setUI(navigationTreeTable, true, treeTableSelectionListener); - - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - navigationTree.setSelectionInterval(0, 0); - splitPane.resetToPreferredSizes(); - } - }); - - // expand the tree - SwingUtil.expandTree(navigationTree); - SwingUtil.expandTreeTable(navigationTreeTable); - - // auto-expand demoNode when selected - SwingUtil.addExpandOnClickListener(navigationTree); - SwingUtil.addExpandOnClickListener(navigationTreeTable); + getHandler().$afterCompleteSetup(); } - -protected void openUI(NavNode demoNode) { - - // Get demoNode type - Class<?> editType = demoNode.getInternalClass(); - String id = demoNode.getId(); - - // If it's category demoNode - if (editType.equals(String.class)) { - - // Actors categorie demoNode - if (NavDemoTreeHelper.ACTORS_CATEGORY_NODE.equals(id)) { - - java.util.List<People> peoples = dataProvider.getPeoples(); - showUI(peoples, ActorsContentUI.class); - - // Movies categorie demoNode - } else if (NavDemoTreeHelper.MOVIES_CATEGORY_NODE.equals(id)) { - - java.util.List<Movie> movies = dataProvider.getMovies(); - showUI(movies, MoviesContentUI.class); - } - - // People demoNode - } else if (editType.equals(People.class)) { - People people = dataProvider.getPeople(id); - showUI(people, ActorContentUI.class); - - // Movie demoNode - } else if (editType.equals(Movie.class)) { - Movie movie = dataProvider.getMovie(id); - showUI(movie, MovieContentUI.class); - } -} - -// Create by introspection content ui -protected <B> void showUI(B bean, Class<? extends AbstractContentUI> uiClass) { - - // Verify if instance is existing - AbstractContentUI ui = getContentIfExist(uiClass); - - // Get layout identifier - String contentName = uiClass.getName(); - - if (ui == null) { - try { - // Get constructor - Constructor<? extends AbstractContentUI> constructor = - uiClass.getConstructor(JAXXContext.class); - - // Invoke instance creation - ui = constructor.newInstance(this); - } catch (Exception eee) { - log.error(eee); - ErrorDialogUI.showError(eee); - } - - // Add to content panel - content.add(ui, contentName); - } - - // Attach bean - ui.setData(bean); - - // show ui - contentLayout.show(content, contentName); -} - -// Get content if exist in content, else return null -protected <E extends Component> E getContentIfExist(Class<E> uiClass) { - String contentName = uiClass.getName(); - if (log.isDebugEnabled()) { - log.debug("Get content if exist " + contentName); - } - if (!contentLayout.contains(contentName)) { - return null; - } - return (E) contentLayout.getComponent(content, contentName); -} ]]> </script> Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoDataProvider.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoDataProvider.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoDataProvider.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -54,10 +54,12 @@ movies = new HashMap<String, Movie>(); peoples = new HashMap<String, People>(); - log.info("for " + this); - People a = new People("0", "Jack", "Black", 0, "/jaxx/demo/images/jack.jpg"); - People a2 = new People("1", "Héctor", "Jiménez", 0, "/jaxx/demo/images/hector.jpg"); - People a3 = new People("2", "Ana", "de la Reguera", 0, "/jaxx/demo/images/ana.jpg"); + if (log.isDebugEnabled()) { + log.debug("for " + this); + } + People a = new People("0", "Jack", "Black", 35, "/jaxx/demo/images/jack.jpg"); + People a2 = new People("1", "Héctor", "Jiménez", 28, "/jaxx/demo/images/hector.jpg"); + People a3 = new People("2", "Ana", "de la Reguera", 34, "/jaxx/demo/images/ana.jpg"); Movie m = new Movie("0", "Nacho libre", 1996, "/jaxx/demo/images/nacho.jpg"); m.addActor(a); Added: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java (rev 0) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -0,0 +1,275 @@ +package jaxx.demo.feature.nav; + +import jaxx.demo.entities.AbstractDemoBean; +import jaxx.demo.entities.Movie; +import jaxx.demo.entities.People; +import jaxx.demo.feature.nav.content.AbstractContentUI; +import jaxx.demo.feature.nav.content.ActorContentUI; +import jaxx.demo.feature.nav.content.ActorsContentUI; +import jaxx.demo.feature.nav.content.MovieContentUI; +import jaxx.demo.feature.nav.content.MoviesContentUI; +import jaxx.demo.feature.nav.tree.NavDemoTreeCellRenderer; +import jaxx.demo.feature.nav.tree.NavDemoTreeNode; +import jaxx.demo.feature.nav.treetable.NavDemoTreeTableNode; +import jaxx.runtime.JAXXContext; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.decorator.DecoratorProvider; +import jaxx.runtime.decorator.JXPathDecorator; +import jaxx.runtime.swing.CardLayout2; +import jaxx.runtime.swing.ErrorDialogUI; +import jaxx.runtime.swing.nav.NavNode; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTreeTable; + +import javax.swing.ImageIcon; +import javax.swing.JPanel; +import javax.swing.JTree; +import javax.swing.SwingUtilities; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.TreePath; +import java.awt.Component; +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.List; + +import static org.nuiton.i18n.I18n.n_; + +/** + * Handler of all uis in the Nave demo. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.2 + */ +public class NavDemoHandler { + + private static final Log log = LogFactory.getLog(NavDemoHandler.class); + + protected final NavDemo ui; + + public static String MOVIES_CATEGORY_NODE = n_("jaxxdemo.common.movies"); + + public static String ACTORS_CATEGORY_NODE = n_("jaxxdemo.common.actors"); + + public NavDemoHandler(NavDemo ui) { + this.ui = ui; + } + + public void initUI(MoviesContentUI contentUI) { + DecoratorProvider provider = + contentUI.getContextValue(DecoratorProvider.class); + JXPathDecorator<Movie> decorator = + (JXPathDecorator<Movie>) provider.getDecorator(Movie.class); + contentUI.getListHeader().init(decorator, new ArrayList<Movie>()); + } + + public void initUI(ActorsContentUI contentUI) { + DecoratorProvider provider = + contentUI.getContextValue(DecoratorProvider.class); + JXPathDecorator<People> decorator = + (JXPathDecorator<People>) provider.getDecorator(People.class); + contentUI.getListHeader().init(decorator, new ArrayList<People>()); + } + + public void selectChild(AbstractContentUI<?> contentUI, + AbstractDemoBean selected) { + contentUI.getTreeHelper().selectNode(selected.getId()); + contentUI.getTreeTableHelper().selectNode(selected.getId()); + } + + public String getContent(AbstractDemoBean data) { + if (data == null) { + return "no content"; + } + StringBuilder buffer = new StringBuilder(); + buffer.append(data); + return buffer.toString(); + } + + public ImageIcon getImage(AbstractDemoBean data) { + return data == null ? null : SwingUtil.createIcon(data.getImage()); + } + + /** To init the {@link NavDemo} ui. */ + public void $afterCompleteSetup() { + + // share in context + + ui.setContextValue(this); + ui.setContextValue(ui.getTreeHelper(), "treeHelper"); + ui.setContextValue(ui.getTreeTableHelper(), "treeTableHelper"); + + // Creation of selection listener to open ui when tree selection change + TreeSelectionListener treeSelectionListener = new TreeSelectionListener() { + @Override + public void valueChanged(TreeSelectionEvent event) { + TreePath path = event.getPath(); + NavDemoTreeNode demoNode = + (NavDemoTreeNode) path.getLastPathComponent(); + + if (log.isDebugEnabled()) { + log.debug("Select demoNode " + demoNode); + } + + // Do nothing for root + if (demoNode.isRoot()) { + return; + } + openUI(demoNode); + } + }; + + // Creation of selection listener to open ui when tree selection change + TreeSelectionListener treeTableSelectionListener = new TreeSelectionListener() { + @Override + public void valueChanged(TreeSelectionEvent event) { + TreePath path = event.getPath(); + NavDemoTreeTableNode demoNode = + (NavDemoTreeTableNode) path.getLastPathComponent(); + + if (log.isDebugEnabled()) { + log.debug("Select demoNode " + demoNode); + } + + // Do nothing for root + if (demoNode.isRoot()) { + return; + } + openUI(demoNode); + } + }; + + final JTree tree = ui.getNavigationTree(); + JXTreeTable table = ui.getNavigationTreeTable(); + + // Attach renderer + NavDemoTreeCellRenderer renderer = new NavDemoTreeCellRenderer( + ui.getContextValue(DecoratorProvider.class), + ui.getDataProvider() + ); + tree.setCellRenderer(renderer); + + // Register tree + ui.getTreeHelper().setUI(tree, true, treeSelectionListener); + + // Register tree table + ui.getTreeTableHelper().setUI(table, true, treeTableSelectionListener); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + tree.setSelectionInterval(0, 0); + ui.getSplitPane().resetToPreferredSizes(); + } + }); + + // expand the tree + SwingUtil.expandTree(tree); + SwingUtil.expandTreeTable(table); + + // auto-expand demoNode when selected + SwingUtil.addExpandOnClickListener(tree); + SwingUtil.addExpandOnClickListener(table); + } + + protected void openUI(NavNode demoNode) { + + // Get demoNode type + Class<?> editType = demoNode.getInternalClass(); + String id = demoNode.getId(); + + // If it's category demoNode + NavDemoDataProvider provider = ui.getDataProvider(); + if (editType.equals(String.class)) { + + // Actors categorie demoNode + if (ACTORS_CATEGORY_NODE.equals(id)) { + + List<People> peoples = provider.getPeoples(); + showUI(peoples, ActorsContentUI.class); + + // Movies categorie demoNode + } else if (MOVIES_CATEGORY_NODE.equals(id)) { + + List<Movie> movies = provider.getMovies(); + showUI(movies, MoviesContentUI.class); + } + + // People demoNode + } else if (editType.equals(People.class)) { + People people = provider.getPeople(id); + showUI(people, ActorContentUI.class); + + // Movie demoNode + } else if (editType.equals(Movie.class)) { + Movie movie = provider.getMovie(id); + showUI(movie, MovieContentUI.class); + } + } + + // Create by introspection content ui + + protected <B> void showUI(B bean, + Class<? extends AbstractContentUI<B>> uiClass) { + + // Verify if instance is existing + AbstractContentUI<B> ui = getContentIfExist(uiClass); + + // Get layout identifier + String contentName = uiClass.getName(); + + JPanel content = this.ui.getContent(); + if (ui == null) { + try { + // Get constructor + Constructor<? extends AbstractContentUI<B>> constructor = + uiClass.getConstructor(JAXXContext.class); + + // Invoke instance creation + ui = constructor.newInstance(this.ui); + } catch (Exception eee) { + log.error("Could not create ui of type " + uiClass, eee); + ErrorDialogUI.showError(eee); + return; + } + + // Add to content panel + content.add(ui, contentName); + } + + // Attach bean + ui.setData(bean); + + // show ui + this.ui.getContentLayout().show(content, contentName); + + // revalidate container + SwingUtilities.invokeLater(revalidateContent); + + } + + // Get content if exist in content, else return null + + protected <E extends Component> E getContentIfExist(Class<E> uiClass) { + String contentName = uiClass.getName(); + if (log.isDebugEnabled()) { + log.debug("Get content if exist " + contentName); + } + CardLayout2 layout2 = ui.getContentLayout(); + if (!layout2.contains(contentName)) { + return null; + } + return (E) layout2.getComponent(ui.getContent(), contentName); + } + + private final Runnable revalidateContent = new Runnable() { + + @Override + public void run() { + ui.revalidate(); + } + }; + +} \ No newline at end of file Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx 2010-09-07 10:46:24 UTC (rev 2072) @@ -27,6 +27,7 @@ genericType='B extends Object'> <import> + jaxx.demo.feature.nav.NavDemoHandler jaxx.demo.feature.nav.tree.NavDemoTreeHelper jaxx.demo.feature.nav.treetable.NavDemoTreeTableHelper </import> @@ -37,6 +38,8 @@ <NavDemoTreeTableHelper id='treeTableHelper' initializer='getContextValue(NavDemoTreeTableHelper.class,"treeTableHelper")'/> + <NavDemoHandler id='handler' + initializer='getContextValue(NavDemoHandler.class)'/> <script><![CDATA[ public abstract B getData(); Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx 2010-09-07 10:46:24 UTC (rev 2072) @@ -30,23 +30,6 @@ <People id='data' javaBean='null'/> - <script><![CDATA[ - -String getContent(People data) { - if (data == null) { - return "no content"; - } - StringBuilder buffer = new StringBuilder(); - buffer.append(data); - return buffer.toString(); -} - -ImageIcon getImage(People data) { - return data == null? null :SwingUtil.createIcon(data.getImage()); -} - -]]></script> - <JSplitPane id='splitPane' orientation='{JSplitPane.VERTICAL_SPLIT}' resizeWeight='0.5' @@ -61,7 +44,7 @@ border='{new TitledBorder(_("jaxxdemo.navigation.actor.title"))}' editable='false' font-size='11' - text='{getContent(getData())}'/> + text='{getHandler().getContent(getData())}'/> </JScrollPane> <JScrollPane border='{new TitledBorder("Picture")}' @@ -70,7 +53,7 @@ minimumSize='{SwingUtil.newMinDimension()}'> <JLabel horizontalAlignment='center' - icon='{getImage(getData())}'/> + icon='{getHandler().getImage(getData())}'/> </JScrollPane> Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx 2010-09-07 10:46:24 UTC (rev 2072) @@ -26,43 +26,16 @@ <import> jaxx.demo.entities.* + jaxx.runtime.swing.editor.bean.BeanListHeader jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer - jaxx.runtime.binding.SimpleJAXXObjectBinding - java.beans.PropertyChangeEvent - java.beans.PropertyChangeListener - </import> <java.util.List id='data' genericType='People' javaBean='null'/> <script><![CDATA[ - private void $afterCompleteSetup() { - - addPropertyChangeListener(PROPERTY_DATA, new PropertyChangeListener(){ - @Override - public void propertyChange(PropertyChangeEvent evt) { - java.util.List<People> ps = getData(); - - if (ps != null) { - DefaultListModel model = (DefaultListModel) list.getModel(); - for (People p : ps) { - model.addElement(p); - } - } else { - // clean list model - DefaultListModel model = (DefaultListModel) list.getModel(); - model.removeAllElements(); - } - } - }); + getHandler().initUI(this); } - -protected void selectChild() { - People selected = (People)list.getSelectedValue(); - getTreeHelper().selectNode(selected.getId()); - getTreeTableHelper().selectNode(selected.getId()); -} ]]></script> <JPanel layout='{new BorderLayout()}'> @@ -73,20 +46,37 @@ columnHeaderView='{toolbar}' horizontalScrollBarPolicy='{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}' verticalScrollBarPolicy='{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}'> - <JList id='list' model='{new DefaultListModel()}' + + <!-- list of actors --> + <JList id='list' cellRenderer='{getContextValue(DecoratorProviderListCellRenderer.class)}'/> + + <!-- list header --> + <JToolBar id='toolbar' floatable='false' layout='{new BorderLayout()}'> + <JPanel layout='{new GridLayout(1,0)}' + constraints='BorderLayout.CENTER'> + + <!-- to show the selected actor --> + <JButton text='jaxxdemo.action.show' + enabled='{list.getSelectedIndex()!=-1}' + onActionPerformed='getHandler().selectChild(this, (People) list.getSelectedValue())'/> + + <!-- to show a new actor --> + <JButton text='jaxxdemo.action.add'/> + + <!-- to delete the selected actor --> + <JButton text='jaxxdemo.action.remove' + enabled='{list.getSelectedIndex()!=-1}'/> + </JPanel> + + <BeanListHeader id='listHeader' constraints='BorderLayout.EAST' + i18nPrefix='jaxxdemo.common.' + data='{getData()}' genericType='People' + list='{list}' showReset='true' + beanType='{People.class}'/> + </JToolBar> + </JScrollPane> - <JToolBar id='toolbar' constraints='BorderLayout.SOUTH' - floatable='false'> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton text='jaxxdemo.action.show' - enabled='{list.getSelectedIndex()!=-1}' - onActionPerformed='selectChild()'/> - <JButton text='jaxxdemo.action.add'/> - <JButton text='jaxxdemo.action.remove' - enabled='{list.getSelectedIndex()!=-1}'/> - </JPanel> - </JToolBar> </JPanel> </AbstractContentUI> \ No newline at end of file Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx 2010-09-07 10:46:24 UTC (rev 2072) @@ -30,22 +30,6 @@ <Movie id='data' javaBean='null'/> - <script><![CDATA[ - -String getContent(Movie data) { - if (data == null) { - return "no content"; - } - StringBuilder buffer = new StringBuilder(); - buffer.append(data); - return buffer.toString(); -} - -ImageIcon getImage(Movie data) { - return data == null? null :SwingUtil.createIcon(data.getImage()); -} -]]></script> - <JSplitPane id='splitPane' orientation='{JSplitPane.VERTICAL_SPLIT}' resizeWeight='0.5' @@ -60,7 +44,7 @@ border='{new TitledBorder(_("jaxxdemo.navigation.movie.title"))}' editable='false' font-size='11' - text='{getContent(getData())}'/> + text='{getHandler().getContent(getData())}'/> </JScrollPane> <JScrollPane border='{new TitledBorder("Picture")}' @@ -68,7 +52,7 @@ verticalScrollBarPolicy='{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}' minimumSize='{SwingUtil.newMinDimension()}'> - <JLabel horizontalAlignment='center' icon='{getImage(getData())}'/> + <JLabel horizontalAlignment='center' icon='{getHandler().getImage(getData())}'/> </JScrollPane> Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx 2010-09-07 10:46:24 UTC (rev 2072) @@ -22,44 +22,18 @@ #L% --> -<AbstractContentUI - superGenericType='java.util.List<Movie>'> +<AbstractContentUI superGenericType='java.util.List<Movie>'> <import> - jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer - jaxx.demo.entities.* - jaxx.runtime.binding.SimpleJAXXObjectBinding - java.beans.PropertyChangeEvent - java.beans.PropertyChangeListener + jaxx.demo.entities.* + jaxx.runtime.swing.editor.bean.BeanListHeader + jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer </import> <script><![CDATA[ private void $afterCompleteSetup() { - - addPropertyChangeListener(PROPERTY_DATA, new PropertyChangeListener(){ - @Override - public void propertyChange(PropertyChangeEvent evt) { - java.util.List<Movie> ms = getData(); - - if (ms != null) { - DefaultListModel model = (DefaultListModel) list.getModel(); - for (Movie m : ms) { - model.addElement(m); - } - } else { - // clean list model - DefaultListModel model = (DefaultListModel) list.getModel(); - model.removeAllElements(); - } - } - }); + getHandler().initUI(this); } - -protected void selectChild() { - Movie selected = (Movie)list.getSelectedValue(); - getTreeHelper().selectNode(selected.getId()); - getTreeTableHelper().selectNode(selected.getId()); -} ]]></script> <java.util.List id='data' genericType='Movie' javaBean='null'/> @@ -73,23 +47,35 @@ horizontalScrollBarPolicy='{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}' verticalScrollBarPolicy='{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}'> - <JList id='list' model='{new DefaultListModel()}' + <!-- list of movies --> + <JList id='list' cellRenderer='{getContextValue(DecoratorProviderListCellRenderer.class)}'/> - </JScrollPane> + <!-- list header --> + <JToolBar id='toolbar' floatable='false' layout='{new BorderLayout()}'> + <JPanel layout='{new GridLayout(1,0)}' + constraints='BorderLayout.CENTER'> - <JToolBar id='toolbar' opaque='false' constraints='BorderLayout.SOUTH' - floatable='false'> + <!-- to show the selected actor --> + <JButton text='jaxxdemo.action.show' + enabled='{list.getSelectedIndex()!=-1}' + onActionPerformed='getHandler().selectChild(this, (Movie) list.getSelectedValue())'/> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton text='jaxxdemo.action.show' - enabled='{list.getSelectedIndex()!=-1}' - onActionPerformed='selectChild()'/> - <JButton text='jaxxdemo.action.add'/> - <JButton text='jaxxdemo.action.remove' - enabled='{list.getSelectedIndex()!=-1}'/> - </JPanel> - </JToolBar> + <!-- to show a new actor --> + <JButton text='jaxxdemo.action.add'/> + <!-- to delete the selected actor --> + <JButton text='jaxxdemo.action.remove' + enabled='{list.getSelectedIndex()!=-1}'/> + </JPanel> + + <BeanListHeader id='listHeader' constraints='BorderLayout.EAST' + i18nPrefix='jaxxdemo.common.' + data='{getData()}' genericType='Movie' + list='{list}' showReset='true' + beanType='{Movie.class}'/> + </JToolBar> + </JScrollPane> + </JPanel> </AbstractContentUI> \ No newline at end of file Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/ActorsTreeNodeLoador.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/ActorsTreeNodeLoador.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/ActorsTreeNodeLoador.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -63,7 +63,6 @@ return provider.getPeoples(); } - @SuppressWarnings({"unchecked"}) @Override public NavDemoTreeNode createNode(People data, NavDataProvider dataProvider) { Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/MoviesTreeNodeLoador.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/MoviesTreeNodeLoador.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/MoviesTreeNodeLoador.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -27,6 +27,7 @@ import jaxx.demo.feature.nav.NavDemoDataProvider; import jaxx.demo.entities.Movie; +import jaxx.demo.feature.nav.NavDemoHandler; import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.NavHelper; import jaxx.runtime.swing.nav.tree.NavTreeNodeChildLoador; @@ -65,7 +66,6 @@ return provider.getMovies(); } - @SuppressWarnings({"unchecked"}) @Override public NavDemoTreeNode createNode(Movie data, NavDataProvider dataProvider) { @@ -83,7 +83,7 @@ // Create clients category node actorsCategoryNode = new NavDemoTreeNode( String.class, - n_(NavDemoTreeHelper.ACTORS_CATEGORY_NODE), + n_(NavDemoHandler.ACTORS_CATEGORY_NODE), null, NavHelper.getChildLoador(ActorsTreeNodeLoador.class) ); Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeCellRenderer.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeCellRenderer.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeCellRenderer.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -50,7 +50,8 @@ protected DecoratorProvider decoratorProvider; - public NavDemoTreeCellRenderer(DecoratorProvider decoratorProvider, NavDemoDataProvider provider) { + public NavDemoTreeCellRenderer(DecoratorProvider decoratorProvider, + NavDemoDataProvider provider) { setDataProvider(provider); this.decoratorProvider = decoratorProvider; } Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeHelper.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeHelper.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/tree/NavDemoTreeHelper.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -26,32 +26,26 @@ package jaxx.demo.feature.nav.tree; import jaxx.demo.feature.nav.NavDemoDataProvider; +import jaxx.demo.feature.nav.NavDemoHandler; import jaxx.runtime.swing.nav.tree.NavTreeHelper; import javax.swing.tree.DefaultTreeModel; -import static org.nuiton.i18n.I18n.n_; - /** * @author sletellier <letellier@codelutin.com> * @since 2.1 */ public class NavDemoTreeHelper extends NavTreeHelper<NavDemoTreeNode> { - public static String MOVIES_CATEGORY_NODE = "movies"; - - public static String ACTORS_CATEGORY_NODE = "actors"; - public NavDemoTreeHelper(NavDemoDataProvider provider) { setDataProvider(provider); } @Override public NavDemoDataProvider getDataProvider() { - return (NavDemoDataProvider) dataProvider; + return (NavDemoDataProvider) super.getDataProvider(); } - @SuppressWarnings({"unchecked"}) public DefaultTreeModel createModel() { // Create root static node @@ -65,7 +59,7 @@ // Create movies category node NavDemoTreeNode moviesCategoryNode = new NavDemoTreeNode( String.class, - n_(MOVIES_CATEGORY_NODE), + NavDemoHandler.MOVIES_CATEGORY_NODE, null, getChildLoador(MoviesTreeNodeLoador.class) ); @@ -73,7 +67,7 @@ // Create peoples category node NavDemoTreeNode peoplesCategoryNode = new NavDemoTreeNode( String.class, - n_(ACTORS_CATEGORY_NODE), + NavDemoHandler.ACTORS_CATEGORY_NODE, null, getChildLoador(ActorsTreeNodeLoador.class) ); Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/ActorsTreeTableNodeLoador.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/ActorsTreeTableNodeLoador.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/ActorsTreeTableNodeLoador.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -63,7 +63,6 @@ return provider.getPeoples(); } - @SuppressWarnings({"unchecked"}) @Override public NavDemoTreeTableNode createNode(People data, NavDataProvider dataProvider) { Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/MoviesTreeTableNodeLoador.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/MoviesTreeTableNodeLoador.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/MoviesTreeTableNodeLoador.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -27,6 +27,7 @@ import jaxx.demo.feature.nav.NavDemoDataProvider; import jaxx.demo.entities.Movie; +import jaxx.demo.feature.nav.NavDemoHandler; import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.NavHelper; import jaxx.runtime.swing.nav.treetable.NavTreeTableNodeChildLoador; @@ -65,9 +66,9 @@ return provider.getMovies(); } - @SuppressWarnings({"unchecked"}) @Override - public NavDemoTreeTableNode createNode(Movie data, NavDataProvider dataProvider) { + public NavDemoTreeTableNode createNode(Movie data, + NavDataProvider dataProvider) { NavDemoTreeTableNode moviesNode; NavDemoTreeTableNode actorsCategoryNode; @@ -83,7 +84,7 @@ // Create clients category node actorsCategoryNode = new NavDemoTreeTableNode( String.class, - n_(NavDemoTreeTableHelper.ACTORS_CATEGORY_NODE), + n_(NavDemoHandler.ACTORS_CATEGORY_NODE), null, NavHelper.getChildLoador(ActorsTreeTableNodeLoador.class) ); Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableHelper.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableHelper.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableHelper.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -26,32 +26,26 @@ package jaxx.demo.feature.nav.treetable; import jaxx.demo.feature.nav.NavDemoDataProvider; +import jaxx.demo.feature.nav.NavDemoHandler; import jaxx.runtime.swing.nav.treetable.NavTreeTableHelper; import jaxx.runtime.swing.nav.treetable.NavTreeTableModel; -import static org.nuiton.i18n.I18n.n_; - /** * @author sletellier <letellier@codelutin.com> * @since 2.1 */ public class NavDemoTreeTableHelper extends NavTreeTableHelper<NavDemoTreeTableNode> { - public static String MOVIES_CATEGORY_NODE = "movies"; - - public static String ACTORS_CATEGORY_NODE = "actors"; - public NavDemoTreeTableHelper(NavDemoDataProvider provider) { setDataProvider(provider); } @Override public NavDemoDataProvider getDataProvider() { - return (NavDemoDataProvider) dataProvider; + return (NavDemoDataProvider) super.getDataProvider(); } - @SuppressWarnings({"unchecked"}) public NavTreeTableModel createModel() { // Create root static node @@ -65,7 +59,7 @@ // Create movies category node NavDemoTreeTableNode moviesCategoryNode = new NavDemoTreeTableNode( String.class, - n_(MOVIES_CATEGORY_NODE), + NavDemoHandler.MOVIES_CATEGORY_NODE, null, getChildLoador(MoviesTreeTableNodeLoador.class) ); @@ -73,7 +67,7 @@ // Create peoples category node NavDemoTreeTableNode peoplesCategoryNode = new NavDemoTreeTableNode( String.class, - n_(ACTORS_CATEGORY_NODE), + NavDemoHandler.ACTORS_CATEGORY_NODE, null, getChildLoador(ActorsTreeTableNodeLoador.class) ); Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableModel.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableModel.java 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/treetable/NavDemoTreeTableModel.java 2010-09-07 10:46:24 UTC (rev 2072) @@ -107,9 +107,9 @@ @Override public String[] getColumnsNames() { - return new String[]{_("jaxxdemo.tree.firstName"), - _("jaxxdemo.tree.lastName"), - _("jaxxdemo.tree.age")}; + return new String[]{_("jaxxdemo.common.firstName"), + _("jaxxdemo.common.lastName"), + _("jaxxdemo.common.age")}; } @Override 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 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo-en_GB.properties 2010-09-07 10:46:24 UTC (rev 2072) @@ -155,9 +155,20 @@ jaxxdemo.action.show=show jaxxdemo.action.site=Web site jaxxdemo.action.site.tip=Go to the web site +jaxxdemo.common.actors=Actors +jaxxdemo.common.age=Age +jaxxdemo.common.firstName=First name +jaxxdemo.common.id=Id +jaxxdemo.common.image=Image +jaxxdemo.common.lastName=Last name +jaxxdemo.common.movie=Movie +jaxxdemo.common.movies=Movies +jaxxdemo.common.people=People +jaxxdemo.common.title=Title +jaxxdemo.common.year=Year jaxxdemo.component.jaxx=JAXX Components jaxxdemo.component.jaxx.editor=Editors -jaxxdemo.component.jaxx.tree= +jaxxdemo.component.jaxx.tree=Tree jaxxdemo.component.swing=Swing Components jaxxdemo.component.swing.buttons=Buttons jaxxdemo.component.swing.form=Form elements @@ -216,8 +227,8 @@ jaxxdemo.tree.age=Age jaxxdemo.tree.firstName=First name jaxxdemo.tree.lastName=Last name -jaxxdemo.tree.tabtitle= -jaxxdemo.treeTable.tabtitle= +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. jaxxdemo.warning.no.ui=No ui environnement detected model0.f0= 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 2010-09-07 10:45:13 UTC (rev 2071) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo-fr_FR.properties 2010-09-07 10:46:24 UTC (rev 2072) @@ -155,6 +155,17 @@ jaxxdemo.action.show=Voir jaxxdemo.action.site=Site internet jaxxdemo.action.site.tip=Acc\u00E9der au site de l'application sur internet +jaxxdemo.common.actors=Acteurs +jaxxdemo.common.age=Age +jaxxdemo.common.firstName=Pr\u00E9nom +jaxxdemo.common.id=Identifiant +jaxxdemo.common.image=Image +jaxxdemo.common.lastName=Nom +jaxxdemo.common.movie=Film +jaxxdemo.common.movies=Films +jaxxdemo.common.people=Acteur +jaxxdemo.common.title=Titre +jaxxdemo.common.year=Ann\u00E9e jaxxdemo.component.jaxx=Composants JAXX jaxxdemo.component.jaxx.editor=Editeurs jaxxdemo.component.jaxx.tree=
participants (1)
-
tchemit@users.nuiton.org