Author: tchemit Date: 2008-02-25 21:45:19 +0000 (Mon, 25 Feb 2008) New Revision: 1240 Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/DetailTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/ListTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SynchronizeTabModel.java Removed: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerAbstractTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java Log: create a package tab in model Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -19,7 +19,7 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction; -import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.ListTabModel; import javax.swing.JTextField; import java.awt.event.ActionEvent; Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -1,199 +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 fr.cemagref.simexplorer.is.ui.swing.model; - -import fr.cemagref.simexplorer.is.entities.attachment.Attachment; -import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.entities.metadata.Version; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Le model pour un Tab contenant le détail d'une application. - * <p/> - * TODO - * - * @author chemit - */ -public class DetailTabModel extends SimExplorerAbstractTabModel { - - /** la propriété pour indiquer un changement de racine d'arbre */ - public static final String ROOT_NODE_PROPERTY_CHANGED = "rootNodePropertyChanged"; - - /** la propriété pour indiquer un changement de sélection de noeud dans l'arbre */ - public static final String SELECTED_NODE_PROPERTY_CHANGED = "selectedNodePropertyChanged"; - - /** la propriété pour indiquer un changement de sélection de version */ - public static final String SELECTED_VERSION_INDEX_PROPERTY_CHANGED = "selectedVersionIndexPropertyChanged"; - - /** la propriété pour indiquer un changement de sélection de fichier attaché */ - public static final String SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED = "selectedAttachmentIndexPropertyChanged"; - - private static final long serialVersionUID = 4851121531481734868L; - - static protected Log log = LogFactory.getLog(DetailTabModel.class); - - /** le LoggableElement root de l'arbre de navigation */ - protected EntityTreeNode rootNode; - - /** - * le LoggableElement sélectionné dans l'arbre de navigation (ou null - * si le node sélectionné n'est pas un LoggableElement) - */ - protected LoggableElement selectedNode; - - /** - * le LoggableElement affiché dans le panel de détail : il correspond au LE - * sélectionné avec la version sélectionné (ou null si le node sélectionné - * n'est pas un LoggableElement) - */ - protected LoggableElement detailNode; - /** - * la liste des versions disponibles pour le LoggableElement sélectionné - * dans l'arbre (ou null si pas de LoggableElement sélectionné dans l'arbre - * de navigation) - */ - protected Version[] versions; - - /** - * l'index de la version sélectionnée dans la liste des versions (ou null - * si la liste des versions est nulle) - */ - protected Integer selectedVersionIndex; - - /** - * l'index de l'attachment sélectionné dans la liste des attachments (ou - * null si pas liste vide) - */ - protected Integer selectedAttachmentIndex; - - /** - * l'historique des elements deja visites. - * - * @see HistoryModel - */ - protected HistoryModel<EntityTreeNode> history; - - public DetailTabModel(SimExplorerContext context) { - super(context); - history =new HistoryModel<EntityTreeNode>(); - } - - public void setRootNode(EntityTreeNode rootNode) { - EntityTreeNode oldRootNode = this.rootNode; - this.rootNode = rootNode; - firePropertyChange(ROOT_NODE_PROPERTY_CHANGED, oldRootNode, rootNode); - } - - public void setSelectedNode(LoggableElement selectedNode) { - LoggableElement oldSelectedNode = this.selectedNode; - this.selectedNode = selectedNode; - this.detailNode = selectedNode; - firePropertyChange(SELECTED_NODE_PROPERTY_CHANGED, oldSelectedNode, selectedNode); - } - - public void setSelectedVersion(Version version) { - Integer oldSelectedVersionIndex = this.selectedVersionIndex; - this.selectedVersionIndex = getVersionIndex(version); - firePropertyChange(SELECTED_VERSION_INDEX_PROPERTY_CHANGED, oldSelectedVersionIndex, selectedVersionIndex); - } - - public void setSelectedAttachmentIndex(Integer selectedAttachmentIndex) { - Integer oldSelectedAttachmentIndex = this.selectedAttachmentIndex; - this.selectedAttachmentIndex = selectedAttachmentIndex; - firePropertyChange(SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED, oldSelectedAttachmentIndex, selectedAttachmentIndex); - } - - public EntityTreeNode getRootNode() { - return rootNode; - } - - public LoggableElement getSelectedNode() { - return selectedNode; - } - - public Version getSelectedVersion() { - return versions == null || selectedVersionIndex == null || selectedVersionIndex == -1 ? null : versions[selectedVersionIndex]; - } - - public Integer getSelectedAttachmentIndex() { - return selectedAttachmentIndex; - } - - public Attachment getSelectedAttachment() { - return detailNode == null || selectedAttachmentIndex == null || selectedAttachmentIndex == -1 ? null : detailNode.getAttachment(selectedAttachmentIndex); - } - - public Version getSelectedVersion(int integer) { - return versions == null ? null : versions[integer]; - } - - public Version[] getVersions() { - return versions; - } - - public LoggableElement getDetailNode() { - return detailNode; - } - - public HistoryModel<EntityTreeNode> getHistory() { - if (history == null) { - history = new HistoryModel<EntityTreeNode>(HistoryModel.HISTORY_CAPACITY); - } - return history; - } - - public void setDetailNode(LoggableElement detailNode) { - this.detailNode = detailNode; - } - - public void clear() { - getHistory().clear(); - reset(); - } - - protected Integer getVersionIndex(Version version) { - if (versions != null && version != null) { - for (int i = 0; i < versions.length; i++) { - if (versions[i].equals(version)) { - return i; - } - } - } - return null; - } - - public void setVersions(Version[] versions) { - this.versions = versions; - } - - public void reset() { - super.reset(); - selectedNode = null; - resetSelectedVersion(); - } - - public void resetSelectedVersion() { - versions = null; - detailNode = null; - selectedVersionIndex = null; - selectedAttachmentIndex = null; - } -} \ No newline at end of file Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -1,472 +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 fr.cemagref.simexplorer.is.ui.swing.model; - -import fr.cemagref.simexplorer.is.entities.metadata.MetaData; -import fr.cemagref.simexplorer.is.storage.SortColumn; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; -import jaxx.util.SimplePaginationEnum; - -import java.io.Serializable; - -/** - * Le model pour un Tab contenant une liste de metas - * - * @author chemit - */ -public class ListTabModel extends SimExplorerAbstractTabModel { - - /** la propriété pour indiquer un changement de sélection de ligne dans la table */ - public static final String SELECTED_ROW_PROPERTY_CHANGED = "selectedRowPropertyChanged"; - - /** la propriété pour indiquer un changement dans le modele de requete */ - public static final String QUERY_PROPERTY_CHANGED = "queryPropertyChanged"; - - /** la propriété pour indiquer un changement dans le modele de pagination */ - public static final String PAGINATION_PROPERTY_CHANGED = "paginationPropertyChanged"; - - private static final long serialVersionUID = -3623331875470531459L; - - /** le modele de requete */ - protected final QueryModel query; - - /** le modele de requete avant modification */ - protected final QueryModel oldQuery; - - /** le modele de pagination */ - protected final PaginationModel pagination; - - /** le modele de pagination avant modification */ - protected final PaginationModel oldPagination; - - /** la liste des données */ - protected MetaData[] list; - - /** l'index de la donnée sélectionné dans l'ui */ - protected int selectedIndex; - - public ListTabModel(SimExplorerContext context) { - super(context); - query = new QueryModel(); - oldQuery = new QueryModel(); - pagination = new PaginationModel(SimplePaginationEnum._10); - oldPagination = new PaginationModel(SimplePaginationEnum._10); - } - - public void initTabModel(boolean remote) { - reset(); - // no selection at first load - synch(remote, null, null); - // setdefault sizor from config - setWidth(remote ? context.getConfig().getRemoteSizor() : context.getConfig().getLocalSizor()); - } - - public void setSelectedIndex(int selectedIndex) { - Integer oldSelectedIndex = this.selectedIndex; - this.selectedIndex = selectedIndex; - if (selectedIndex != -1) { - synch(isRemote(), get(selectedIndex)); - } - firePropertyChange(SELECTED_ROW_PROPERTY_CHANGED, oldSelectedIndex, selectedIndex); - } - - public void setPageNumber(int pageNumber) { - PaginationModel newPagination = savePagination(); - newPagination.pageNumber = pageNumber; - // rebuild list - rebuildList(false); - firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, newPagination); - } - - public void setWidth(SimplePaginationEnum width) { - if (width == null) { - throw new NullPointerException("can not set a null width"); - } - PaginationModel newPagination = savePagination(); - newPagination.width = width; - //TODO should be -1 ? - newPagination.pageNumber = 0; - - // rebuild list - rebuildList(true); - firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, newPagination); - } - - public void reload() { - PaginationModel newPagination = savePagination(); - // trick to force reload of page - // we must change the model to trigger ui, so doing this is ok - // if pageNumber was already at -1 : means no data - newPagination.pageNumber = -1; - - // rebuild list - rebuildList(true); - firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, newPagination); - } - - public void setSearchText(String searchText) { - QueryModel newQuery = saveQuery(); - newQuery.searchText = searchText; - // rebuild list - rebuildList(true); - firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); - } - - public void resetQuery() { - QueryModel newQuery = saveQuery(); - newQuery.reset(); - // rebuild list - rebuildList(true); - firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); - } - - public void setOnlyLatest(boolean onlyLatest) { - QueryModel newQuery = saveQuery(); - newQuery.onlyLatest = onlyLatest; - // rebuild list - rebuildList(true); - firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); - } - - public void setQuerySort(SortColumn sortColumn, boolean ascending) { - QueryModel newQuery = saveQuery(); - newQuery.sortColumn = sortColumn; - newQuery.sortAscending = ascending; - // rebuild list - rebuildList(true); - firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); - } - - public void setSimpleQuery(boolean simpleQuery) { - QueryModel newQuery = saveQuery(); - newQuery.simpleQuery = simpleQuery; - // rebuild list - rebuildList(true); - firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); - } - - protected PaginationModel savePagination() { - PaginationModel newPagination = getPagination(); - newPagination.bind(oldPagination); - return newPagination; - } - - protected QueryModel saveQuery() { - QueryModel newQuery = getQuery(); - newQuery.bind(oldQuery); - return newQuery; - } - - public MetaData[] getList() { - return list; - } - - public PaginationModel getPagination() { - return pagination; - } - - public QueryModel getQuery() { - return query; - } - - public boolean hasQuery() { - return getQuery().hasQuery(); - } - - public boolean isEmpty() { - return list == null || list.length == 0; - } - - @Override - public void reset() { - super.reset(); - list = null; - selectedIndex = -1; - query.reset(); - pagination.reset(); - } - - public MetaData get(int index) { - if (index == -1) { - return null; - } - checkSize(index); - return getList()[index]; - } - - public int size() { - return isEmpty() ? 0 : list.length; - } - - public int getSelectedIndex() { - return selectedIndex; - } - - @Override - public String toString() { - String s = super.toString(); - return s.substring(s.lastIndexOf(".") + 1) + "<size: " + size() + ",selectedItem:" + selectedItem + ">"; - } - - protected void setList(MetaData[] list) { - this.list = list; - } - - protected void rebuildList(boolean generatePagination) { - - selectedIndex = -1; - - PaginationModel page = getPagination(); - QueryModel query = getQuery(); - - // init pagination - if (generatePagination) { - - // get size list - page.size = StorageServiceHelper.getCount(context, isRemote(), query.getQuery(), query.isOnlyLatest()); - //TODO should be at -1 - page.pageNumber = 0; - - } - - // init query model - - // obtain datas from service - MetaData[] data = StorageServiceHelper.getData( - context, - isRemote(), - query.isOnlyLatest(), - query.getQuery(), - (int) page.getFirstIndex(), - page.getWidthInt(), - query.getSortColumn(), - query.isSortAscending() - ); - - // save in model - setList(data); - } - - /** - * Le modèle de pagination d'une liste - * - * @author tony - */ - public static class PaginationModel { - - /** default size of a page */ - protected SimplePaginationEnum defaultWidth; - - /** the current page number */ - protected int pageNumber; - - /** size of the total flow */ - protected long size; - - /** size of a page */ - protected SimplePaginationEnum width; - - public PaginationModel(SimplePaginationEnum defaultWidth) { - this.defaultWidth = defaultWidth; - reset(); - } - - public void reset() { - pageNumber = -1; - size = 0; - width = defaultWidth; - } - - public void bind(PaginationModel destination) { - destination.pageNumber = pageNumber; - destination.width = width; - destination.size = size; - } - - public long getFirstIndex() { - return pageNumber * getWidthInt(); - } - - public long getSize() { - return size; - } - - public SimplePaginationEnum getWidth() { - return width; - } - - public boolean hasNext() { - return size - pageNumber > getWidthInt(); - } - - public boolean hasPrevious() { - return pageNumber >= getWidthInt(); - } - - public int getCurrentPage() { - - return pageNumber; - } - - public int getNbPages() { - int anInt = getWidthInt(); - int nbPages = (int) (size / anInt); - if ((size % anInt != 0) || (nbPages == 0 && size > 0)) { - nbPages++; - } - return nbPages; - } - - public int getWidthInt() { - return width == null ? SimplePaginationEnum._10.intValue() : getWidth().intValue(); - } - - @Override - public String toString() { - String s = super.toString(); - return s.substring(s.indexOf('@')) + "<size:" + size + ", pageNumber:" + pageNumber + ", width:" + width + ", nbPages:" + getNbPages() + ">"; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof PaginationModel)) return false; - PaginationModel that = (PaginationModel) o; - return pageNumber == that.pageNumber && - size == that.size && - width == that.width; - } - - @Override - public int hashCode() { - int result; - result = pageNumber; - result = 31 * result + (int) (size ^ (size >>> 32)); - result = 31 * result + width.hashCode(); - return result; - } - - } - - /** - * Le modele d'une recherche sur des loggable element. - * - * @author chemit - */ - public static class QueryModel implements Serializable { - - /** flag to detect simple text query */ - protected boolean simpleQuery; - - /** flag to get only latest version */ - protected boolean onlyLatest; - - /** flag to indicate sorting way (null for none) */ - protected boolean sortAscending; - - /** simple full text query */ - protected String searchText; - - /** query column ordering (use SortColumn.Noe if no sort) */ - protected SortColumn sortColumn; - - private static final long serialVersionUID = -5018101346037499469L; - - public QueryModel() { - // obtain default empty query - reset(); - } - - public void bind(QueryModel destination) { - destination.simpleQuery = simpleQuery; - destination.onlyLatest = onlyLatest; - destination.sortAscending = sortAscending; - destination.searchText = searchText; - destination.sortColumn = sortColumn; - } - - public void reset() { - simpleQuery = true; - onlyLatest = true; - sortAscending = true; - searchText = null; - sortColumn = SortColumn.None; - } - - public boolean hasQuery() { - return searchText != null && !searchText.isEmpty(); - } - - public boolean isSimpleQuery() { - return simpleQuery; - } - - public boolean isOnlyLatest() { - return onlyLatest; - } - - public boolean isSortAscending() { - return sortAscending; - } - - public String getQuery() { - return searchText; - } - - public SortColumn getSortColumn() { - return sortColumn; - } - - @Override - public String toString() { - String s = super.toString(); - return s.substring(s.lastIndexOf('.') + 1) + "<sortColumn:" + sortColumn + ",sortAscending:" + sortAscending + ", searchText:" + searchText + ">"; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof QueryModel)) return false; - QueryModel that = (QueryModel) o; - return onlyLatest == that.onlyLatest && - simpleQuery == that.simpleQuery && - sortAscending == that.sortAscending && - !(searchText != null ? !searchText.equals(that.searchText) : that.searchText != null) - && sortColumn == that.sortColumn; - } - - @Override - public int hashCode() { - int result; - result = (simpleQuery ? 1 : 0); - result = 31 * result + (onlyLatest ? 1 : 0); - result = 31 * result + (sortAscending ? 1 : 0); - result = 31 * result + (searchText != null ? searchText.hashCode() : 0); - result = 31 * result + sortColumn.hashCode(); - return result; - } - } - - private void checkSize(int index) { - if (index > -1 && (isEmpty() || size() < index)) { - throw new IllegalStateException(getClass() + " has size " + size() + " and was required index " + index); - } - } -} Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerAbstractTabModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerAbstractTabModel.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerAbstractTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -1,161 +0,0 @@ -/* -* ##% Copyright (C) 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 fr.cemagref.simexplorer.is.ui.swing.model; - -import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.entities.metadata.MetaData; -import fr.cemagref.simexplorer.is.entities.metadata.Version; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; -import jaxx.runtime.builder.TabModel; - -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; - -/** - * Le model d'onglet de l'application - * - * @author chemit - * @see TabModel - * @see SimExplorerTab - */ -public abstract class SimExplorerAbstractTabModel implements TabModel { - - /** l'onglet associé au model */ - protected SimExplorerTab tab; - - /** le dernier élément sélectionné dans l'onglet */ - protected DataEntityModel selectedItem; - - /** flag pour savoir si la source est remote ou non */ - protected Boolean remote; - - protected final SimExplorerContext context; - - /** support pourles changements des propriétés */ - protected PropertyChangeSupport changeSupport; - - private static final long serialVersionUID = 4136959472154027361L; - - public SimExplorerAbstractTabModel(SimExplorerContext context) { - this.context = context; - } - - public String getName() { - return tab.name(); - } - - public boolean isRemote() { - return remote != null && remote; - } - - public void synch(EntityTreeNode node) { - this.remote = node == null ? null : node.isRemote(); - getSelectedItem().synch(node); - } - - public void synch(Boolean remote, LoggableElement selectedElement) { - this.remote = remote; - getSelectedItem().synch(remote, selectedElement); - } - - public void synch(Boolean remote, MetaData selectedMeta) { - this.remote = remote; - getSelectedItem().synch(remote, selectedMeta); - } - - public void synch(Boolean remote, String uuid, Version version) { - this.remote = remote; - getSelectedItem().synch(remote, uuid, version); - } - - public DataEntityModel getSelectedItem() { - if (selectedItem == null) { - selectedItem = new DataEntityModel(); - //selectedItem.setRemote(remote); - } - return selectedItem; - } - - public void setName(String name) { - this.tab = SimExplorerTab.valueOf(name); - } - - public void setSelectedItem(DataEntityModel selectedItem) { - this.selectedItem = selectedItem; - if (selectedItem != null) { - remote = selectedItem.isRemote(); - } - } - - public void reset() { - remote = null; - selectedItem = null; - } - - public synchronized void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - if (listener == null) { - return; - } - if (changeSupport == null) { - changeSupport = new PropertyChangeSupport(this); - } - changeSupport.addPropertyChangeListener(propertyName, listener); - } - - public synchronized void addPropertyChangeListener(PropertyChangeListener listener) { - if (listener == null) { - return; - } - if (changeSupport == null) { - changeSupport = new PropertyChangeSupport(this); - } - changeSupport.addPropertyChangeListener(listener); - } - - public synchronized void removePropertyChangeListener(PropertyChangeListener listener) { - if (listener == null || changeSupport == null) { - return; - } - changeSupport.removePropertyChangeListener(listener); - } - - public synchronized void removePropertyChangeListeners() { - if (changeSupport == null) { - return; - } - for (PropertyChangeListener listener : getPropertyChangeListeners()) { - changeSupport.removePropertyChangeListener(listener); - } - } - - public synchronized PropertyChangeListener[] getPropertyChangeListeners() { - if (changeSupport == null) { - return new PropertyChangeListener[0]; - } - return changeSupport.getPropertyChangeListeners(); - } - - public void firePropertyChange(String propertyName, Object oldValue, Object newValue) { - if (changeSupport == null || (oldValue == null && newValue == null) || - (oldValue != null && oldValue.equals(newValue))) { - return; - } - changeSupport.firePropertyChange(propertyName, oldValue, newValue); - } -} Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -1,204 +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 fr.cemagref.simexplorer.is.ui.swing.model; - -import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.entities.metadata.Version; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; - -/** - * Le model pour un Tab contenant 2 arbres de navigation de LE - * - * @author chemit - */ -public class SynchronizeTabModel extends SimExplorerAbstractTabModel { - - /** la clef de l'évènement après des sources */ - public static final String SOURCES_PROPERTY_CHANGED = "sourcesPropertyChanged"; - /** la clef de l'évènement après la modification du root de l'arbre local */ - public static final String LOCAL_ROOT_NODE_PROPERTY_CHANGED = "rootLocalNodePropertyChanged"; - - /** la clef de l'évènement après la modification du root de l'arbre distant */ - public static final String REMOTE_ROOT_NODE_PROPERTY_CHANGED = "rootRemoteNodePropertyChanged"; - - /** la clef de l'évènement après la modification du noeud sélectionné dans l'arbre local */ - public static final String LOCAL_SELECTED_NODE_PROPERTY_CHANGED = "selectedLocalNodePropertyChanged"; - - /** la clef de l'évènement après la modification du noeud sélectionné dans l'arbre distant */ - public static final String REMOTE_SELECTED_NODE_PROPERTY_CHANGED = "selectedRemoteNodePropertyChanged"; - - private static final long serialVersionUID = -3623331875470531459L; - - /** la racine de l'arbre de navigation local. */ - protected LoggableElement localRootNode; - - /** la racine de l'abre de navigation distant. */ - protected LoggableElement remoteRootNode; - - /** l'élément dans l'arbre de navigation local sélectionné */ - protected LoggableElement localSelectedNode; - - /** l'élément de l'arbre de navigation distant sélectionné */ - protected LoggableElement remoteSelectedNode; - - public SynchronizeTabModel(SimExplorerContext context) { - super(context); - } - - /** - * @param remote flag pour indiquer sur quel arbre on travaille - * @return le LE encapsulé dans le root de l'arbre de navigation, ou null - */ - public LoggableElement getRootNode(boolean remote) { - return remote ? remoteRootNode : localRootNode; - } - - /** - * @param remote flag pour indiquer sur quel arbre on travaille - * @return le LE encapsulé dans le noeud sélection de l'arbre de navigation, ou null - */ - public LoggableElement getSelectedNode(boolean remote) { - return remote ? remoteSelectedNode : localSelectedNode; - } - - public String getRootProperty(boolean remote) { - return remote ? REMOTE_ROOT_NODE_PROPERTY_CHANGED : LOCAL_ROOT_NODE_PROPERTY_CHANGED; - } - - public String getSelectedProperty(boolean remote) { - return remote ? REMOTE_SELECTED_NODE_PROPERTY_CHANGED : LOCAL_SELECTED_NODE_PROPERTY_CHANGED; - } - - public void setSources(LoggableElement[] sources) { - LoggableElement[] olds = new LoggableElement[]{localRootNode, remoteRootNode}; - firePropertyChange(SOURCES_PROPERTY_CHANGED, olds, sources); - setRootNode(sources[0], false); - setRootNode(sources[1], true); - } - - public void setRootNode(LoggableElement source, boolean remote) { - String property = getRootProperty(remote); - LoggableElement oldRootNode = getRootNode(remote); - if (remote) { - remoteRootNode = source; - } else { - localRootNode = source; - } - firePropertyChange(property, oldRootNode, source); - } - - public void setSelectedNode(LoggableElement source, boolean remote) { - String property = getSelectedProperty(remote); - LoggableElement oldSelectedNode = getSelectedNode(remote); - if (remote) { - remoteSelectedNode = source; - } else { - localSelectedNode = source; - } - firePropertyChange(property, oldSelectedNode, source); - } - - public LoggableElement[] guessSources(SimExplorerContext context, boolean remote, String uuid, LoggableElement le) { - - // on nettoye le model avant tout - LoggableElement[] result = new LoggableElement[2]; - - result[remote ? 1 : 0] = le; - - result[remote ? 0 : 1] = getLe(context, !remote, uuid); - - return result; - } - - public LoggableElement[] guessSources(SimExplorerContext context, DataEntityModel selected) { - - // on nettoye le model avant tout - - LoggableElement[] result = new LoggableElement[2]; - - if (selected == null) { - // rien de plus à faire - return result; - } - - return guessSources(context, selected.isRemote(), selected.getUuid(), selected.getLe(context)); - } - - @Override - public void reset() { - super.reset(); - localSelectedNode = remoteSelectedNode = null; - localRootNode = remoteRootNode = null; - } - - public void reloadSources(String uuid, boolean deleteLocal, boolean deleteRemote, boolean treateLocal, boolean treateRemote) { - LoggableElement[] result = new LoggableElement[2]; - - result[0] =loadSource(context, uuid, deleteLocal, treateLocal, false); - result[1] =loadSource(context, uuid, deleteRemote, treateRemote,true); - - setSources(result); - } - - private LoggableElement loadSource(SimExplorerContext context, String uuid, boolean deleteRemote, boolean treateRemote, boolean remote) { - LoggableElement result=null; - LoggableElement node = getRootNode(remote); - if (node != null && !node.getMetaData().getUuid().equals(uuid)) { - // nothing tobe done - result = node; - } else { - if (!deleteRemote) { - if (treateRemote && (node == null || node.getMetaData().getUuid().equals(uuid))) { - // must load this node - result = getLe(context, remote, uuid); - } else { - result = node; - } - } - } - return result; - } - - private LoggableElement getLe(SimExplorerContext context, boolean remote, String uuid) { - - Version version = getVersion(context, remote, uuid); - - DataEntityModel destination = new DataEntityModel(); - - if (version != null) { - destination.synch(remote, uuid, version); - return destination.getLe(context); - } - return null; - } - - - protected Version getVersion(SimExplorerContext context, boolean remote, String uuid) { - // recuperation des versions de l'element destination - Version[] versions = StorageServiceHelper.getVersions(context, remote, uuid); - Version requiredVersion = null; - if (versions.length != 0) { - // on prend la dernière version disponible dans la base (i.e - // la première de la liste des versions :)) - requiredVersion = versions[0]; - } - return requiredVersion; - } -} \ No newline at end of file Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/DetailTabModel.java (from rev 1238, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/DetailTabModel.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/DetailTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -0,0 +1,201 @@ +/* +* ##% 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 fr.cemagref.simexplorer.is.ui.swing.model.tab; + +import fr.cemagref.simexplorer.is.entities.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.LoggableElement; +import fr.cemagref.simexplorer.is.entities.metadata.Version; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; +import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Le model pour un Tab contenant le détail d'une application. + * <p/> + * TODO + * + * @author chemit + */ +public class DetailTabModel extends SimExplorerAbstractTabModel { + + /** la propriété pour indiquer un changement de racine d'arbre */ + public static final String ROOT_NODE_PROPERTY_CHANGED = "rootNodePropertyChanged"; + + /** la propriété pour indiquer un changement de sélection de noeud dans l'arbre */ + public static final String SELECTED_NODE_PROPERTY_CHANGED = "selectedNodePropertyChanged"; + + /** la propriété pour indiquer un changement de sélection de version */ + public static final String SELECTED_VERSION_INDEX_PROPERTY_CHANGED = "selectedVersionIndexPropertyChanged"; + + /** la propriété pour indiquer un changement de sélection de fichier attaché */ + public static final String SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED = "selectedAttachmentIndexPropertyChanged"; + + private static final long serialVersionUID = 4851121531481734868L; + + static protected Log log = LogFactory.getLog(DetailTabModel.class); + + /** le LoggableElement root de l'arbre de navigation */ + protected EntityTreeNode rootNode; + + /** + * le LoggableElement sélectionné dans l'arbre de navigation (ou null + * si le node sélectionné n'est pas un LoggableElement) + */ + protected LoggableElement selectedNode; + + /** + * le LoggableElement affiché dans le panel de détail : il correspond au LE + * sélectionné avec la version sélectionné (ou null si le node sélectionné + * n'est pas un LoggableElement) + */ + protected LoggableElement detailNode; + /** + * la liste des versions disponibles pour le LoggableElement sélectionné + * dans l'arbre (ou null si pas de LoggableElement sélectionné dans l'arbre + * de navigation) + */ + protected Version[] versions; + + /** + * l'index de la version sélectionnée dans la liste des versions (ou null + * si la liste des versions est nulle) + */ + protected Integer selectedVersionIndex; + + /** + * l'index de l'attachment sélectionné dans la liste des attachments (ou + * null si pas liste vide) + */ + protected Integer selectedAttachmentIndex; + + /** + * l'historique des elements deja visites. + * + * @see fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel + */ + protected HistoryModel<EntityTreeNode> history; + + public DetailTabModel(SimExplorerContext context) { + super(context); + history =new HistoryModel<EntityTreeNode>(); + } + + public void setRootNode(EntityTreeNode rootNode) { + EntityTreeNode oldRootNode = this.rootNode; + this.rootNode = rootNode; + firePropertyChange(ROOT_NODE_PROPERTY_CHANGED, oldRootNode, rootNode); + } + + public void setSelectedNode(LoggableElement selectedNode) { + LoggableElement oldSelectedNode = this.selectedNode; + this.selectedNode = selectedNode; + this.detailNode = selectedNode; + firePropertyChange(SELECTED_NODE_PROPERTY_CHANGED, oldSelectedNode, selectedNode); + } + + public void setSelectedVersion(Version version) { + Integer oldSelectedVersionIndex = this.selectedVersionIndex; + this.selectedVersionIndex = getVersionIndex(version); + firePropertyChange(SELECTED_VERSION_INDEX_PROPERTY_CHANGED, oldSelectedVersionIndex, selectedVersionIndex); + } + + public void setSelectedAttachmentIndex(Integer selectedAttachmentIndex) { + Integer oldSelectedAttachmentIndex = this.selectedAttachmentIndex; + this.selectedAttachmentIndex = selectedAttachmentIndex; + firePropertyChange(SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED, oldSelectedAttachmentIndex, selectedAttachmentIndex); + } + + public EntityTreeNode getRootNode() { + return rootNode; + } + + public LoggableElement getSelectedNode() { + return selectedNode; + } + + public Version getSelectedVersion() { + return versions == null || selectedVersionIndex == null || selectedVersionIndex == -1 ? null : versions[selectedVersionIndex]; + } + + public Integer getSelectedAttachmentIndex() { + return selectedAttachmentIndex; + } + + public Attachment getSelectedAttachment() { + return detailNode == null || selectedAttachmentIndex == null || selectedAttachmentIndex == -1 ? null : detailNode.getAttachment(selectedAttachmentIndex); + } + + public Version getSelectedVersion(int integer) { + return versions == null ? null : versions[integer]; + } + + public Version[] getVersions() { + return versions; + } + + public LoggableElement getDetailNode() { + return detailNode; + } + + public HistoryModel<EntityTreeNode> getHistory() { + if (history == null) { + history = new HistoryModel<EntityTreeNode>(HistoryModel.HISTORY_CAPACITY); + } + return history; + } + + public void setDetailNode(LoggableElement detailNode) { + this.detailNode = detailNode; + } + + public void clear() { + getHistory().clear(); + reset(); + } + + protected Integer getVersionIndex(Version version) { + if (versions != null && version != null) { + for (int i = 0; i < versions.length; i++) { + if (versions[i].equals(version)) { + return i; + } + } + } + return null; + } + + public void setVersions(Version[] versions) { + this.versions = versions; + } + + public void reset() { + super.reset(); + selectedNode = null; + resetSelectedVersion(); + } + + public void resetSelectedVersion() { + versions = null; + detailNode = null; + selectedVersionIndex = null; + selectedAttachmentIndex = null; + } +} \ No newline at end of file Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/ListTabModel.java (from rev 1238, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/ListTabModel.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/ListTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -0,0 +1,472 @@ +/* +* ##% 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 fr.cemagref.simexplorer.is.ui.swing.model.tab; + +import fr.cemagref.simexplorer.is.entities.metadata.MetaData; +import fr.cemagref.simexplorer.is.storage.SortColumn; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; +import jaxx.util.SimplePaginationEnum; + +import java.io.Serializable; + +/** + * Le model pour un Tab contenant une liste de metas + * + * @author chemit + */ +public class ListTabModel extends SimExplorerAbstractTabModel { + + /** la propriété pour indiquer un changement de sélection de ligne dans la table */ + public static final String SELECTED_ROW_PROPERTY_CHANGED = "selectedRowPropertyChanged"; + + /** la propriété pour indiquer un changement dans le modele de requete */ + public static final String QUERY_PROPERTY_CHANGED = "queryPropertyChanged"; + + /** la propriété pour indiquer un changement dans le modele de pagination */ + public static final String PAGINATION_PROPERTY_CHANGED = "paginationPropertyChanged"; + + private static final long serialVersionUID = -3623331875470531459L; + + /** le modele de requete */ + protected final QueryModel query; + + /** le modele de requete avant modification */ + protected final QueryModel oldQuery; + + /** le modele de pagination */ + protected final PaginationModel pagination; + + /** le modele de pagination avant modification */ + protected final PaginationModel oldPagination; + + /** la liste des données */ + protected MetaData[] list; + + /** l'index de la donnée sélectionné dans l'ui */ + protected int selectedIndex; + + public ListTabModel(SimExplorerContext context) { + super(context); + query = new QueryModel(); + oldQuery = new QueryModel(); + pagination = new PaginationModel(SimplePaginationEnum._10); + oldPagination = new PaginationModel(SimplePaginationEnum._10); + } + + public void initTabModel(boolean remote) { + reset(); + // no selection at first load + synch(remote, null, null); + // setdefault sizor from config + setWidth(remote ? context.getConfig().getRemoteSizor() : context.getConfig().getLocalSizor()); + } + + public void setSelectedIndex(int selectedIndex) { + Integer oldSelectedIndex = this.selectedIndex; + this.selectedIndex = selectedIndex; + if (selectedIndex != -1) { + synch(isRemote(), get(selectedIndex)); + } + firePropertyChange(SELECTED_ROW_PROPERTY_CHANGED, oldSelectedIndex, selectedIndex); + } + + public void setPageNumber(int pageNumber) { + PaginationModel newPagination = savePagination(); + newPagination.pageNumber = pageNumber; + // rebuild list + rebuildList(false); + firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, newPagination); + } + + public void setWidth(SimplePaginationEnum width) { + if (width == null) { + throw new NullPointerException("can not set a null width"); + } + PaginationModel newPagination = savePagination(); + newPagination.width = width; + //TODO should be -1 ? + newPagination.pageNumber = 0; + + // rebuild list + rebuildList(true); + firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, newPagination); + } + + public void reload() { + PaginationModel newPagination = savePagination(); + // trick to force reload of page + // we must change the model to trigger ui, so doing this is ok + // if pageNumber was already at -1 : means no data + newPagination.pageNumber = -1; + + // rebuild list + rebuildList(true); + firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, newPagination); + } + + public void setSearchText(String searchText) { + QueryModel newQuery = saveQuery(); + newQuery.searchText = searchText; + // rebuild list + rebuildList(true); + firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); + } + + public void resetQuery() { + QueryModel newQuery = saveQuery(); + newQuery.reset(); + // rebuild list + rebuildList(true); + firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); + } + + public void setOnlyLatest(boolean onlyLatest) { + QueryModel newQuery = saveQuery(); + newQuery.onlyLatest = onlyLatest; + // rebuild list + rebuildList(true); + firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); + } + + public void setQuerySort(SortColumn sortColumn, boolean ascending) { + QueryModel newQuery = saveQuery(); + newQuery.sortColumn = sortColumn; + newQuery.sortAscending = ascending; + // rebuild list + rebuildList(true); + firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); + } + + public void setSimpleQuery(boolean simpleQuery) { + QueryModel newQuery = saveQuery(); + newQuery.simpleQuery = simpleQuery; + // rebuild list + rebuildList(true); + firePropertyChange(QUERY_PROPERTY_CHANGED, oldQuery, newQuery); + } + + protected PaginationModel savePagination() { + PaginationModel newPagination = getPagination(); + newPagination.bind(oldPagination); + return newPagination; + } + + protected QueryModel saveQuery() { + QueryModel newQuery = getQuery(); + newQuery.bind(oldQuery); + return newQuery; + } + + public MetaData[] getList() { + return list; + } + + public PaginationModel getPagination() { + return pagination; + } + + public QueryModel getQuery() { + return query; + } + + public boolean hasQuery() { + return getQuery().hasQuery(); + } + + public boolean isEmpty() { + return list == null || list.length == 0; + } + + @Override + public void reset() { + super.reset(); + list = null; + selectedIndex = -1; + query.reset(); + pagination.reset(); + } + + public MetaData get(int index) { + if (index == -1) { + return null; + } + checkSize(index); + return getList()[index]; + } + + public int size() { + return isEmpty() ? 0 : list.length; + } + + public int getSelectedIndex() { + return selectedIndex; + } + + @Override + public String toString() { + String s = super.toString(); + return s.substring(s.lastIndexOf(".") + 1) + "<size: " + size() + ",selectedItem:" + selectedItem + ">"; + } + + protected void setList(MetaData[] list) { + this.list = list; + } + + protected void rebuildList(boolean generatePagination) { + + selectedIndex = -1; + + PaginationModel page = getPagination(); + QueryModel query = getQuery(); + + // init pagination + if (generatePagination) { + + // get size list + page.size = StorageServiceHelper.getCount(context, isRemote(), query.getQuery(), query.isOnlyLatest()); + //TODO should be at -1 + page.pageNumber = 0; + + } + + // init query model + + // obtain datas from service + MetaData[] data = StorageServiceHelper.getData( + context, + isRemote(), + query.isOnlyLatest(), + query.getQuery(), + (int) page.getFirstIndex(), + page.getWidthInt(), + query.getSortColumn(), + query.isSortAscending() + ); + + // save in model + setList(data); + } + + /** + * Le modèle de pagination d'une liste + * + * @author tony + */ + public static class PaginationModel { + + /** default size of a page */ + protected SimplePaginationEnum defaultWidth; + + /** the current page number */ + protected int pageNumber; + + /** size of the total flow */ + protected long size; + + /** size of a page */ + protected SimplePaginationEnum width; + + public PaginationModel(SimplePaginationEnum defaultWidth) { + this.defaultWidth = defaultWidth; + reset(); + } + + public void reset() { + pageNumber = -1; + size = 0; + width = defaultWidth; + } + + public void bind(PaginationModel destination) { + destination.pageNumber = pageNumber; + destination.width = width; + destination.size = size; + } + + public long getFirstIndex() { + return pageNumber * getWidthInt(); + } + + public long getSize() { + return size; + } + + public SimplePaginationEnum getWidth() { + return width; + } + + public boolean hasNext() { + return size - pageNumber > getWidthInt(); + } + + public boolean hasPrevious() { + return pageNumber >= getWidthInt(); + } + + public int getCurrentPage() { + + return pageNumber; + } + + public int getNbPages() { + int anInt = getWidthInt(); + int nbPages = (int) (size / anInt); + if ((size % anInt != 0) || (nbPages == 0 && size > 0)) { + nbPages++; + } + return nbPages; + } + + public int getWidthInt() { + return width == null ? SimplePaginationEnum._10.intValue() : getWidth().intValue(); + } + + @Override + public String toString() { + String s = super.toString(); + return s.substring(s.indexOf('@')) + "<size:" + size + ", pageNumber:" + pageNumber + ", width:" + width + ", nbPages:" + getNbPages() + ">"; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof PaginationModel)) return false; + PaginationModel that = (PaginationModel) o; + return pageNumber == that.pageNumber && + size == that.size && + width == that.width; + } + + @Override + public int hashCode() { + int result; + result = pageNumber; + result = 31 * result + (int) (size ^ (size >>> 32)); + result = 31 * result + width.hashCode(); + return result; + } + + } + + /** + * Le modele d'une recherche sur des loggable element. + * + * @author chemit + */ + public static class QueryModel implements Serializable { + + /** flag to detect simple text query */ + protected boolean simpleQuery; + + /** flag to get only latest version */ + protected boolean onlyLatest; + + /** flag to indicate sorting way (null for none) */ + protected boolean sortAscending; + + /** simple full text query */ + protected String searchText; + + /** query column ordering (use SortColumn.Noe if no sort) */ + protected SortColumn sortColumn; + + private static final long serialVersionUID = -5018101346037499469L; + + public QueryModel() { + // obtain default empty query + reset(); + } + + public void bind(QueryModel destination) { + destination.simpleQuery = simpleQuery; + destination.onlyLatest = onlyLatest; + destination.sortAscending = sortAscending; + destination.searchText = searchText; + destination.sortColumn = sortColumn; + } + + public void reset() { + simpleQuery = true; + onlyLatest = true; + sortAscending = true; + searchText = null; + sortColumn = SortColumn.None; + } + + public boolean hasQuery() { + return searchText != null && !searchText.isEmpty(); + } + + public boolean isSimpleQuery() { + return simpleQuery; + } + + public boolean isOnlyLatest() { + return onlyLatest; + } + + public boolean isSortAscending() { + return sortAscending; + } + + public String getQuery() { + return searchText; + } + + public SortColumn getSortColumn() { + return sortColumn; + } + + @Override + public String toString() { + String s = super.toString(); + return s.substring(s.lastIndexOf('.') + 1) + "<sortColumn:" + sortColumn + ",sortAscending:" + sortAscending + ", searchText:" + searchText + ">"; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof QueryModel)) return false; + QueryModel that = (QueryModel) o; + return onlyLatest == that.onlyLatest && + simpleQuery == that.simpleQuery && + sortAscending == that.sortAscending && + !(searchText != null ? !searchText.equals(that.searchText) : that.searchText != null) + && sortColumn == that.sortColumn; + } + + @Override + public int hashCode() { + int result; + result = (simpleQuery ? 1 : 0); + result = 31 * result + (onlyLatest ? 1 : 0); + result = 31 * result + (sortAscending ? 1 : 0); + result = 31 * result + (searchText != null ? searchText.hashCode() : 0); + result = 31 * result + sortColumn.hashCode(); + return result; + } + } + + private void checkSize(int index) { + if (index > -1 && (isEmpty() || size() < index)) { + throw new IllegalStateException(getClass() + " has size " + size() + " and was required index " + index); + } + } +} Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java (from rev 1238, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerAbstractTabModel.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SimExplorerAbstractTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -0,0 +1,163 @@ +/* +* ##% Copyright (C) 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 fr.cemagref.simexplorer.is.ui.swing.model.tab; + +import fr.cemagref.simexplorer.is.entities.data.LoggableElement; +import fr.cemagref.simexplorer.is.entities.metadata.MetaData; +import fr.cemagref.simexplorer.is.entities.metadata.Version; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; +import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; +import jaxx.runtime.builder.TabModel; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; + +/** + * Le model d'onglet de l'application + * + * @author chemit + * @see TabModel + * @see SimExplorerTab + */ +public abstract class SimExplorerAbstractTabModel implements TabModel { + + /** l'onglet associé au model */ + protected SimExplorerTab tab; + + /** le dernier élément sélectionné dans l'onglet */ + protected DataEntityModel selectedItem; + + /** flag pour savoir si la source est remote ou non */ + protected Boolean remote; + + protected final SimExplorerContext context; + + /** support pourles changements des propriétés */ + protected PropertyChangeSupport changeSupport; + + private static final long serialVersionUID = 4136959472154027361L; + + public SimExplorerAbstractTabModel(SimExplorerContext context) { + this.context = context; + } + + public String getName() { + return tab.name(); + } + + public boolean isRemote() { + return remote != null && remote; + } + + public void synch(EntityTreeNode node) { + this.remote = node == null ? null : node.isRemote(); + getSelectedItem().synch(node); + } + + public void synch(Boolean remote, LoggableElement selectedElement) { + this.remote = remote; + getSelectedItem().synch(remote, selectedElement); + } + + public void synch(Boolean remote, MetaData selectedMeta) { + this.remote = remote; + getSelectedItem().synch(remote, selectedMeta); + } + + public void synch(Boolean remote, String uuid, Version version) { + this.remote = remote; + getSelectedItem().synch(remote, uuid, version); + } + + public DataEntityModel getSelectedItem() { + if (selectedItem == null) { + selectedItem = new DataEntityModel(); + //selectedItem.setRemote(remote); + } + return selectedItem; + } + + public void setName(String name) { + this.tab = SimExplorerTab.valueOf(name); + } + + public void setSelectedItem(DataEntityModel selectedItem) { + this.selectedItem = selectedItem; + if (selectedItem != null) { + remote = selectedItem.isRemote(); + } + } + + public void reset() { + remote = null; + selectedItem = null; + } + + public synchronized void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { + if (listener == null) { + return; + } + if (changeSupport == null) { + changeSupport = new PropertyChangeSupport(this); + } + changeSupport.addPropertyChangeListener(propertyName, listener); + } + + public synchronized void addPropertyChangeListener(PropertyChangeListener listener) { + if (listener == null) { + return; + } + if (changeSupport == null) { + changeSupport = new PropertyChangeSupport(this); + } + changeSupport.addPropertyChangeListener(listener); + } + + public synchronized void removePropertyChangeListener(PropertyChangeListener listener) { + if (listener == null || changeSupport == null) { + return; + } + changeSupport.removePropertyChangeListener(listener); + } + + public synchronized void removePropertyChangeListeners() { + if (changeSupport == null) { + return; + } + for (PropertyChangeListener listener : getPropertyChangeListeners()) { + changeSupport.removePropertyChangeListener(listener); + } + } + + public synchronized PropertyChangeListener[] getPropertyChangeListeners() { + if (changeSupport == null) { + return new PropertyChangeListener[0]; + } + return changeSupport.getPropertyChangeListeners(); + } + + public void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + if (changeSupport == null || (oldValue == null && newValue == null) || + (oldValue != null && oldValue.equals(newValue))) { + return; + } + changeSupport.firePropertyChange(propertyName, oldValue, newValue); + } +} Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SynchronizeTabModel.java (from rev 1238, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SynchronizeTabModel.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/tab/SynchronizeTabModel.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -0,0 +1,205 @@ +/* +* ##% 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 fr.cemagref.simexplorer.is.ui.swing.model.tab; + +import fr.cemagref.simexplorer.is.entities.data.LoggableElement; +import fr.cemagref.simexplorer.is.entities.metadata.Version; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; + +/** + * Le model pour un Tab contenant 2 arbres de navigation de LE + * + * @author chemit + */ +public class SynchronizeTabModel extends SimExplorerAbstractTabModel { + + /** la clef de l'évènement après des sources */ + public static final String SOURCES_PROPERTY_CHANGED = "sourcesPropertyChanged"; + /** la clef de l'évènement après la modification du root de l'arbre local */ + public static final String LOCAL_ROOT_NODE_PROPERTY_CHANGED = "rootLocalNodePropertyChanged"; + + /** la clef de l'évènement après la modification du root de l'arbre distant */ + public static final String REMOTE_ROOT_NODE_PROPERTY_CHANGED = "rootRemoteNodePropertyChanged"; + + /** la clef de l'évènement après la modification du noeud sélectionné dans l'arbre local */ + public static final String LOCAL_SELECTED_NODE_PROPERTY_CHANGED = "selectedLocalNodePropertyChanged"; + + /** la clef de l'évènement après la modification du noeud sélectionné dans l'arbre distant */ + public static final String REMOTE_SELECTED_NODE_PROPERTY_CHANGED = "selectedRemoteNodePropertyChanged"; + + private static final long serialVersionUID = -3623331875470531459L; + + /** la racine de l'arbre de navigation local. */ + protected LoggableElement localRootNode; + + /** la racine de l'abre de navigation distant. */ + protected LoggableElement remoteRootNode; + + /** l'élément dans l'arbre de navigation local sélectionné */ + protected LoggableElement localSelectedNode; + + /** l'élément de l'arbre de navigation distant sélectionné */ + protected LoggableElement remoteSelectedNode; + + public SynchronizeTabModel(SimExplorerContext context) { + super(context); + } + + /** + * @param remote flag pour indiquer sur quel arbre on travaille + * @return le LE encapsulé dans le root de l'arbre de navigation, ou null + */ + public LoggableElement getRootNode(boolean remote) { + return remote ? remoteRootNode : localRootNode; + } + + /** + * @param remote flag pour indiquer sur quel arbre on travaille + * @return le LE encapsulé dans le noeud sélection de l'arbre de navigation, ou null + */ + public LoggableElement getSelectedNode(boolean remote) { + return remote ? remoteSelectedNode : localSelectedNode; + } + + public String getRootProperty(boolean remote) { + return remote ? REMOTE_ROOT_NODE_PROPERTY_CHANGED : LOCAL_ROOT_NODE_PROPERTY_CHANGED; + } + + public String getSelectedProperty(boolean remote) { + return remote ? REMOTE_SELECTED_NODE_PROPERTY_CHANGED : LOCAL_SELECTED_NODE_PROPERTY_CHANGED; + } + + public void setSources(LoggableElement[] sources) { + LoggableElement[] olds = new LoggableElement[]{localRootNode, remoteRootNode}; + firePropertyChange(SOURCES_PROPERTY_CHANGED, olds, sources); + setRootNode(sources[0], false); + setRootNode(sources[1], true); + } + + public void setRootNode(LoggableElement source, boolean remote) { + String property = getRootProperty(remote); + LoggableElement oldRootNode = getRootNode(remote); + if (remote) { + remoteRootNode = source; + } else { + localRootNode = source; + } + firePropertyChange(property, oldRootNode, source); + } + + public void setSelectedNode(LoggableElement source, boolean remote) { + String property = getSelectedProperty(remote); + LoggableElement oldSelectedNode = getSelectedNode(remote); + if (remote) { + remoteSelectedNode = source; + } else { + localSelectedNode = source; + } + firePropertyChange(property, oldSelectedNode, source); + } + + public LoggableElement[] guessSources(SimExplorerContext context, boolean remote, String uuid, LoggableElement le) { + + // on nettoye le model avant tout + LoggableElement[] result = new LoggableElement[2]; + + result[remote ? 1 : 0] = le; + + result[remote ? 0 : 1] = getLe(context, !remote, uuid); + + return result; + } + + public LoggableElement[] guessSources(SimExplorerContext context, DataEntityModel selected) { + + // on nettoye le model avant tout + + LoggableElement[] result = new LoggableElement[2]; + + if (selected == null) { + // rien de plus à faire + return result; + } + + return guessSources(context, selected.isRemote(), selected.getUuid(), selected.getLe(context)); + } + + @Override + public void reset() { + super.reset(); + localSelectedNode = remoteSelectedNode = null; + localRootNode = remoteRootNode = null; + } + + public void reloadSources(String uuid, boolean deleteLocal, boolean deleteRemote, boolean treateLocal, boolean treateRemote) { + LoggableElement[] result = new LoggableElement[2]; + + result[0] =loadSource(context, uuid, deleteLocal, treateLocal, false); + result[1] =loadSource(context, uuid, deleteRemote, treateRemote,true); + + setSources(result); + } + + private LoggableElement loadSource(SimExplorerContext context, String uuid, boolean deleteRemote, boolean treateRemote, boolean remote) { + LoggableElement result=null; + LoggableElement node = getRootNode(remote); + if (node != null && !node.getMetaData().getUuid().equals(uuid)) { + // nothing tobe done + result = node; + } else { + if (!deleteRemote) { + if (treateRemote && (node == null || node.getMetaData().getUuid().equals(uuid))) { + // must load this node + result = getLe(context, remote, uuid); + } else { + result = node; + } + } + } + return result; + } + + private LoggableElement getLe(SimExplorerContext context, boolean remote, String uuid) { + + Version version = getVersion(context, remote, uuid); + + DataEntityModel destination = new DataEntityModel(); + + if (version != null) { + destination.synch(remote, uuid, version); + return destination.getLe(context); + } + return null; + } + + + protected Version getVersion(SimExplorerContext context, boolean remote, String uuid) { + // recuperation des versions de l'element destination + Version[] versions = StorageServiceHelper.getVersions(context, remote, uuid); + Version requiredVersion = null; + if (versions.length != 0) { + // on prend la dernière version disponible dans la base (i.e + // la première de la liste des versions :)) + requiredVersion = versions[0]; + } + return requiredVersion; + } +} \ No newline at end of file Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -24,7 +24,7 @@ import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.DetailTabModel; import fr.cemagref.simexplorer.is.ui.swing.model.DetailTableModel; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -21,7 +21,7 @@ import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; -import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.ListTabModel; import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel; import javax.swing.JComboBox; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -18,7 +18,7 @@ package fr.cemagref.simexplorer.is.ui.swing.ui; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerAbstractTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.SimExplorerAbstractTabModel; import jaxx.runtime.swing.JAXXTab; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -18,10 +18,10 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.ui; -import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; -import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; -import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerAbstractTabModel; -import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.DetailTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.ListTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.SimExplorerAbstractTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.SynchronizeTabModel; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; import jaxx.runtime.builder.TabContentConfig; import jaxx.runtime.swing.JAXXTab; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -21,7 +21,7 @@ import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerAbstractTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.SimExplorerAbstractTabModel; import fr.cemagref.simexplorer.is.ui.swing.ui.util.MyTabHeader; import jaxx.runtime.JAXXObject; import jaxx.runtime.builder.TabContentConfig; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java 2008-02-25 21:43:13 UTC (rev 1239) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java 2008-02-25 21:45:19 UTC (rev 1240) @@ -20,7 +20,7 @@ import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; -import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.tab.SynchronizeTabModel; import javax.swing.JTree; import javax.swing.tree.DefaultTreeModel;