Author: tchemit Date: 2008-07-20 19:23:48 +0000 (Sun, 20 Jul 2008) New Revision: 729 Added: trunk/lutinjaxx/jaxx-swing-tab/ trunk/lutinjaxx/jaxx-swing-tab/pom.xml trunk/lutinjaxx/jaxx-swing-tab/src/ trunk/lutinjaxx/jaxx-swing-tab/src/main/ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabContentConfig.java trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabFactory.java trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabModel.java trunk/lutinjaxx/jaxx-swing-tab/src/main/resources/ trunk/lutinjaxx/jaxx-swing-tab/src/site/ trunk/lutinjaxx/jaxx-swing-tab/src/site/site.xml trunk/lutinjaxx/jaxx-swing-tab/src/test/ trunk/lutinjaxx/jaxx-swing-tab/src/test/java/ trunk/lutinjaxx/jaxx-swing-tab/src/test/resources/ Removed: trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabContentConfig.java trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabFactory.java trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabModel.java Log: creation module jaxx-swing-tab pour le mini framework des onglets Property changes on: trunk/lutinjaxx/jaxx-swing-tab ___________________________________________________________________ Name: svn:ignore + target Added: trunk/lutinjaxx/jaxx-swing-tab/pom.xml =================================================================== --- trunk/lutinjaxx/jaxx-swing-tab/pom.xml (rev 0) +++ trunk/lutinjaxx/jaxx-swing-tab/pom.xml 2008-07-20 19:23:48 UTC (rev 729) @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>pom</artifactId> + <version>0.2-SNAPSHOT</version> + </parent> + + <artifactId>jaxx-swing-tab</artifactId> + <name>jaxx-swing-tab</name> + + <packaging>jar</packaging> + <version>0.2-SNAPSHOT</version> + <description>Jaxx lutin library swing tab extension</description> + + <build> + <plugins> + + </plugins> + </build> + + <dependencies> + + <dependency> + <groupId>org.codelutin.jaxx</groupId> + <artifactId>runtime</artifactId> + <scope>compile</scope> + </dependency> + + </dependencies> +</project> Copied: trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabContentConfig.java (from rev 713, trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabContentConfig.java) =================================================================== --- trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabContentConfig.java (rev 0) +++ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabContentConfig.java 2008-07-20 19:23:48 UTC (rev 729) @@ -0,0 +1,54 @@ +/* +* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin, +* Tony Chemit, Gabriel Landais +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* 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 Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* ##% */ +package org.codelutin.jaxx.tab; + +import jaxx.runtime.swing.JAXXTab; + +import javax.swing.JTabbedPane; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Pour enregister un tab + * + * @author chemit + */ +@Retention(RetentionPolicy.RUNTIME) + +@Target(ElementType.FIELD) + +public @interface TabContentConfig { + + Class<? extends TabModel> model(); + + Class<? extends JAXXTab> impl(); + + Class<? extends JTabbedPane> parentImpl(); + + boolean useToogle() default false; + + String name(); + + String shortDescription(); + + String[] dynamicFields() default {}; + +} Copied: trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabFactory.java (from rev 713, trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabFactory.java) =================================================================== --- trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabFactory.java (rev 0) +++ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabFactory.java 2008-07-20 19:23:48 UTC (rev 729) @@ -0,0 +1,219 @@ +/* +* \#\#% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin, +* Tony Chemit +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* 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 Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* \#\#% */ +package org.codelutin.jaxx.tab; + +import jaxx.runtime.JAXXObject; +import jaxx.runtime.swing.JAXXTab; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JComponent; +import javax.swing.JTabbedPane; +import java.awt.Component; +import java.lang.reflect.Field; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +/** + * Une usine pour les Tabs, leur configs et leur mod�les + * + * @author tony + * @see TabContentConfig + * @see TabModel + */ + +public abstract class TabFactory { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + protected static Log log = LogFactory.getLog(TabFactory.class); + + /** dictionary of configs */ + protected Map<String, TabContentConfig> configs; + + /** dictionary of instanciated actions */ + protected Map<String, JAXXTab> cache; + + /** dictionary of instanciated models */ + protected Map<String, TabModel> models; + + protected abstract Map<String, TabContentConfig> initFactory(); + + protected abstract void initTab(JAXXTab tab, String tabName, TabContentConfig config); + + protected JAXXTab newTab(String tabName) { + + checkRegistredConfig(tabName); + + // try in cache + if (cache.containsKey(tabName)) { + // use cached tab + return cache.get(tabName); + } + + TabContentConfig config = configs.get(tabName); + + JAXXTab instance; + try { + instance = config.impl().newInstance(); + if (log.isDebugEnabled()) { + log.debug("new tab : " + instance); + } + + cache.put(tabName, instance); + + initJAXXTab(config, instance); + initTab(instance, tabName, config); + + return instance; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public Set<String> keySet() { + return cache.keySet(); + } + + public TabContentConfig getConfig(String tabName) { + checkRegistredConfig(tabName); + return configs.get(tabName); + } + + public JAXXTab getUI(String tabName) { + return cache.get(tabName); + } + + public TabModel getModel(String tabName, Object... params) { + + if (models.containsKey(tabName)) { + return models.get(tabName); + } + TabContentConfig config = getConfig(tabName); + TabModel tabModel; + try { + tabModel = initTabModel(config, params); + if (log.isDebugEnabled()) { + log.debug("new tab model : " + tabModel); + } + models.put(tabName, tabModel); + } catch (Exception e) { + throw new RuntimeException(e); + } + return tabModel; + } + + protected TabModel initTabModel(TabContentConfig config, Object... params) throws InstantiationException, IllegalAccessException { + TabModel tabModel; + tabModel = config.model().newInstance(); + return tabModel; + } + + public void showTab(final JTabbedPane container, String tabName) { + + TabContentConfig config = getConfig(tabName); + + JAXXTab comp = newTab(tabName); + + int index = getTabIndex(container, comp); + if (index == -1) { + registerTab(container, tabName, config, comp); + } + + container.setSelectedComponent(comp); + } + + public void closeTab(JTabbedPane container, String tabName) { + + TabContentConfig config = getConfig(tabName); + + final JComponent comp = cache.get(tabName); + + int index = getTabIndex(container, comp); + if (index != -1) { + container.removeTabAt(index); + if (log.isDebugEnabled()) { + log.debug(config + " index " + index); + } + } + } + + public int getTabIndex(final JTabbedPane container, JComponent comp) { + if (container != null && comp != null) { + for (int i = 0; i < container.getTabCount(); i++) { + Component o = container.getComponentAt(i); + if (o.equals(comp)) { + return i; + } + } + } + return -1; + } + + public void resetCache() { + cache.clear(); + models.clear(); + } + + + protected TabFactory() { + configs = initFactory(); + cache = new TreeMap<String, JAXXTab>(); + models = new TreeMap<String, TabModel>(); + } + + protected JComponent addTabHeader(final JTabbedPane container, final String tabName, final TabContentConfig config, final JAXXTab comp) { + // by default, no tab header + return null; + } + + protected void registerTab(final JTabbedPane container, final String tabName, final TabContentConfig config, final JAXXTab comp) { + + container.addTab(tabName, comp); + + JComponent header = addTabHeader(container, tabName, config, comp); + + if (header != null) { + + container.setTabComponentAt(container.getTabCount() - 1, header); + } + } + + @SuppressWarnings({"unchecked"}) + protected void initJAXXTab(TabContentConfig config, JAXXTab instance) throws NoSuchFieldException, IllegalAccessException { + if (instance instanceof JAXXObject) { + JAXXObject ui = (JAXXObject) instance; + for (String dynamicField : config.dynamicFields()) { + String dynamciName = dynamicField + '_' + config.name(); + Object obj = ui.getObjectById(dynamicField); + Field m = ui.getClass().getDeclaredField("$objectMap"); + m.setAccessible(true); + Map<Object, Object> map = (Map<Object, Object>) m.get(ui); + map.put(dynamciName, obj); + } + } + } + + protected void checkRegistredConfig(String tabName) { + if (!configs.containsKey(tabName)) { + throw new IllegalStateException("can not find a registered TabContentConfig for tab name " + tabName); + } + } + +} \ No newline at end of file Copied: trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabModel.java (from rev 713, trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabModel.java) =================================================================== --- trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabModel.java (rev 0) +++ trunk/lutinjaxx/jaxx-swing-tab/src/main/java/org/codelutin/jaxx/tab/TabModel.java 2008-07-20 19:23:48 UTC (rev 729) @@ -0,0 +1,30 @@ +/* +* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin, +* Tony Chemit +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* 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 Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* ##% */ +package org.codelutin.jaxx.tab; + +import java.io.Serializable; + +/** @author chemit */ +public interface TabModel extends Serializable { + + String getName(); + + void setName(String name); + +} Added: trunk/lutinjaxx/jaxx-swing-tab/src/site/site.xml =================================================================== --- trunk/lutinjaxx/jaxx-swing-tab/src/site/site.xml (rev 0) +++ trunk/lutinjaxx/jaxx-swing-tab/src/site/site.xml 2008-07-20 19:23:48 UTC (rev 729) @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<project name="LutinUtil"> + + <skin> + <groupId>lutinlib</groupId> + <artifactId>lutin-site-skin</artifactId> + <version>0.1</version> + </skin> + + <bannerLeft> + <name>Lutin Buix Jaxx</name> + </bannerLeft> + + <bannerRight> + <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> + <href>http://www.codelutin.com</href> + </bannerRight> + + <poweredBy> + <logo href="http://maven.apache.org" name="Maven" img="images/logos/maven-feather.png"/> + <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="images/jrst-logo.png"/> + <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" + img="images/restructuredtext-logo.png"/> + </poweredBy> + + <body> + <links> + <item name="Labs" href="http://labs.libre-entreprise.org/"/> + <item name="Code Lutin" href="http://www.codelutin.com/"/> + </links> + + <menu name="Utilisateur"> + <item name="Accueil" href="index.html"/> + <item href="http://lutinbuilder.labs.libre-entreprise.org/maven2/buix/jaxx" name="T�l�chargement"/> + </menu> + + <menu name="D�veloppeur"> + <item name="A faire" href="Todo.html"/> + </menu> + + ${reports} + + </body> +</project> Deleted: trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabContentConfig.java =================================================================== --- trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabContentConfig.java 2008-07-20 19:22:41 UTC (rev 728) +++ trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabContentConfig.java 2008-07-20 19:23:48 UTC (rev 729) @@ -1,54 +0,0 @@ -/* -* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin, -* Tony Chemit, Gabriel Landais -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* 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 Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package jaxx.runtime.builder; - -import jaxx.runtime.swing.JAXXTab; - -import javax.swing.JTabbedPane; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Pour enregister un tab - * - * @author chemit - */ -@Retention(RetentionPolicy.RUNTIME) - -@Target(ElementType.FIELD) - -public @interface TabContentConfig { - - Class<? extends TabModel> model(); - - Class<? extends JAXXTab> impl(); - - Class<? extends JTabbedPane> parentImpl(); - - boolean useToogle() default false; - - String name(); - - String shortDescription(); - - String[] dynamicFields() default {}; - -} Deleted: trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabFactory.java =================================================================== --- trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabFactory.java 2008-07-20 19:22:41 UTC (rev 728) +++ trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabFactory.java 2008-07-20 19:23:48 UTC (rev 729) @@ -1,219 +0,0 @@ -/* -* \#\#% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin, -* Tony Chemit -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* 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 Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* \#\#% */ -package jaxx.runtime.builder; - -import jaxx.runtime.JAXXObject; -import jaxx.runtime.swing.JAXXTab; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.JComponent; -import javax.swing.JTabbedPane; -import java.awt.Component; -import java.lang.reflect.Field; -import java.util.Map; -import java.util.TreeMap; -import java.util.Set; - -/** - * Une usine pour les Tabs, leur configs et leur mod�les - * - * @author tony - * @see jaxx.runtime.builder.TabContentConfig - * @see TabModel - */ - -public abstract class TabFactory { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - protected static Log log = LogFactory.getLog(TabFactory.class); - - /** dictionary of configs */ - protected Map<String, TabContentConfig> configs; - - /** dictionary of instanciated actions */ - protected Map<String, JAXXTab> cache; - - /** dictionary of instanciated models */ - protected Map<String, TabModel> models; - - protected abstract Map<String, TabContentConfig> initFactory(); - - protected abstract void initTab(JAXXTab tab, String tabName, TabContentConfig config); - - protected JAXXTab newTab(String tabName) { - - checkRegistredConfig(tabName); - - // try in cache - if (cache.containsKey(tabName)) { - // use cached tab - return cache.get(tabName); - } - - TabContentConfig config = configs.get(tabName); - - JAXXTab instance; - try { - instance = config.impl().newInstance(); - if (log.isDebugEnabled()) { - log.debug("new tab : " + instance); - } - - cache.put(tabName, instance); - - initJAXXTab(config, instance); - initTab(instance, tabName, config); - - return instance; - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public Set<String> keySet() { - return cache.keySet(); - } - - public TabContentConfig getConfig(String tabName) { - checkRegistredConfig(tabName); - return configs.get(tabName); - } - - public JAXXTab getUI(String tabName) { - return cache.get(tabName); - } - - public TabModel getModel(String tabName,Object... params) { - - if (models.containsKey(tabName)) { - return models.get(tabName); - } - TabContentConfig config = getConfig(tabName); - TabModel tabModel; - try { - tabModel = initTabModel(config,params); - if (log.isDebugEnabled()) { - log.debug("new tab model : " + tabModel); - } - models.put(tabName, tabModel); - } catch (Exception e) { - throw new RuntimeException(e); - } - return tabModel; - } - - protected TabModel initTabModel(TabContentConfig config, Object... params) throws InstantiationException, IllegalAccessException { - TabModel tabModel; - tabModel = config.model().newInstance(); - return tabModel; - } - - public void showTab(final JTabbedPane container, String tabName) { - - TabContentConfig config = getConfig(tabName); - - JAXXTab comp = newTab(tabName); - - int index = getTabIndex(container, comp); - if (index == -1) { - registerTab(container, tabName, config, comp); - } - - container.setSelectedComponent(comp); - } - - public void closeTab(JTabbedPane container, String tabName) { - - TabContentConfig config = getConfig(tabName); - - final JComponent comp = cache.get(tabName); - - int index = getTabIndex(container, comp); - if (index != -1) { - container.removeTabAt(index); - if (log.isDebugEnabled()) { - log.debug(config + " index " + index); - } - } - } - - public int getTabIndex(final JTabbedPane container, JComponent comp) { - if (container != null && comp != null) { - for (int i = 0; i < container.getTabCount(); i++) { - Component o = container.getComponentAt(i); - if (o.equals(comp)) { - return i; - } - } - } - return -1; - } - - public void resetCache() { - cache.clear(); - models.clear(); - } - - - protected TabFactory() { - configs = initFactory(); - cache = new TreeMap<String, JAXXTab>(); - models = new TreeMap<String, TabModel>(); - } - - protected JComponent addTabHeader(final JTabbedPane container, final String tabName, final TabContentConfig config, final JAXXTab comp) { - // by default, no tab header - return null; - } - - protected void registerTab(final JTabbedPane container, final String tabName, final TabContentConfig config, final JAXXTab comp) { - - container.addTab(tabName, comp); - - JComponent header = addTabHeader(container, tabName, config, comp); - - if (header != null) { - - container.setTabComponentAt(container.getTabCount() - 1, header); - } - } - - @SuppressWarnings({"unchecked"}) - protected void initJAXXTab(TabContentConfig config, JAXXTab instance) throws NoSuchFieldException, IllegalAccessException { - if (instance instanceof JAXXObject) { - JAXXObject ui = (JAXXObject) instance; - for (String dynamicField : config.dynamicFields()) { - String dynamciName = dynamicField + '_' + config.name(); - Object obj = ui.getObjectById(dynamicField); - Field m = ui.getClass().getDeclaredField("$objectMap"); - m.setAccessible(true); - Map<Object, Object> map = (Map<Object, Object>) m.get(ui); - map.put(dynamciName, obj); - } - } - } - - protected void checkRegistredConfig(String tabName) { - if (!configs.containsKey(tabName)) { - throw new IllegalStateException("can not find a registered TabContentConfig for tab name " + tabName); - } - } - -} \ No newline at end of file Deleted: trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabModel.java =================================================================== --- trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabModel.java 2008-07-20 19:22:41 UTC (rev 728) +++ trunk/lutinjaxx/runtime/src/main/java/jaxx/runtime/builder/TabModel.java 2008-07-20 19:23:48 UTC (rev 729) @@ -1,30 +0,0 @@ -/* -* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin, -* Tony Chemit -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* 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 Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package jaxx.runtime.builder; - -import java.io.Serializable; - -/** @author chemit */ -public interface TabModel extends Serializable { - - String getName(); - - void setName(String name); - -}