Author: tchemit Date: 2008-02-14 07:45:03 +0000 (Thu, 14 Feb 2008) New Revision: 952 Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/DetailTabRefreshHelper.java Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerUIRefreshHelper.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryNextAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryPreviousAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java Log: introduction classe pour les rafraichissement de l'onglet de detail (la classe globale des rafraichissement devient trop importante) Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/DetailTabRefreshHelper.java (from rev 944, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerUIRefreshHelper.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/DetailTabRefreshHelper.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/DetailTabRefreshHelper.java 2008-02-14 07:45:03 UTC (rev 952) @@ -0,0 +1,301 @@ +/* +* ##% 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; + +import fr.cemagref.simexplorer.is.attachment.Attachment; +import fr.cemagref.simexplorer.is.entities.data.ExplorationApplication; +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.model.DetailTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; +import fr.cemagref.simexplorer.is.ui.swing.model.JDetailTableModel; +import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeHelper; +import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeNode; +import static org.codelutin.i18n.I18n._; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListModel; +import javax.swing.JList; +import javax.swing.JTable; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeNode; +import java.awt.Dimension; +import java.awt.Rectangle; +import java.text.SimpleDateFormat; +import java.util.List; + +/** + * Cette classe contient les méthodes utiles et réutilisables pour rafraichir + * l'onglet de detail. + * <p/> + * Les méthodes utilisent les données stockées dans les modèles pour rafraichir + * les uis concernées. + * <p/> + * Note : <b>Dans toutes ces méthodes, NOS modèles ne doivent en aucun cas être modifiés</b> + * <p/> + * Par contre les modèles des ui peuvent être modifiés (par exemple modèle d'arbre, de liste) + * mais uniquement à partir de nos modèles. + * + * @author chemit + */ +public class DetailTabRefreshHelper { + + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss.SSS"); + + + /** + * Rafraichit les actions d'un node dans l'arbre de navigation + * + * @param ui l'onglet de détail + * @param model le model de d'onglet detail + * @param node le node sélectionné dans l'arbre de navigation + */ + public static void refreshDetailActions(JDetailTab ui, DetailTabModel model, LoggableElementTreeNode node) { + // refresh synchronize action button + refreshSynchroniseElementAction(ui, model); + // refresh download LoggableElement button + refreshDownloadElementAction(ui, model, node); + // refresh delete button + refreshDeleteElementAction(ui, model); + // refresh export button + refreshExportAction(ui, model); + // refresh download Attachment button + refreshDownloadAttachmentAction(ui, model); + } + + public static void refreshTreeDetailActions(JDetailTab ui, LoggableElementTreeNode node) { + String tooltip; + boolean enabled = node != null && !node.isLeaf() && node.getChildCount() > 0; + tooltip = !enabled ? null : _("simexplorer.action.collapseAll.tooltip", node.getUserObject()); + SimExplorerUIRefreshHelper.updateButton(ui.getCollapseAllDetail(), enabled, tooltip); + tooltip = !enabled ? null : _("simexplorer.action.expandAll.tooltip", node.getUserObject()); + SimExplorerUIRefreshHelper.updateButton(ui.getExpandAllDetail(), enabled, tooltip); + } + + public static void refreshDownloadElementAction(JDetailTab ui, DetailTabModel model, LoggableElementTreeNode node) { + MetaData detail = model.getDetail(); + boolean enabled = detail != null || LoggableElementTreeHelper.canDownload(node); + String tooltip = !enabled ? null : _("simexplorer.action.downloadLoggableElement.tooltip", detail == null ? node.getUserObject() : detail.getName() + " [" + model.getSelectedVersion() + "]"); + SimExplorerUIRefreshHelper.updateButton(ui.getDownloadElement(), enabled, tooltip); + } + + protected static void refreshDeleteElementAction(JDetailTab ui, DetailTabModel model) { + MetaData detail = model.getDetail(); + boolean enabled = detail != null; + String tooltip = !enabled ? null : _("simexplorer.action.deleteLoggableElement.tooltip", detail.getName() + " [" + model.getSelectedVersion() + "]"); + SimExplorerUIRefreshHelper.updateButton(ui.getDeleteElement(), enabled, tooltip); + } + + public static void refreshDownloadAttachmentAction(JDetailTab ui, DetailTabModel model) { + Attachment attachment = model.getSelectedAttachment(); + MetaData detail = model.getDetail(); + boolean enabled = detail != null && attachment != null; + String tooltip = !enabled ? null : _("simexplorer.action.downloadAttachment.tooltip", attachment); + SimExplorerUIRefreshHelper.updateButton(ui.getDownloadAttachment(), enabled, tooltip); + } + + public static void refreshDetailToTreeAction(JDetailTab ui, DetailTabModel model) { + MetaData detail = model.getDetail(); + DefaultMutableTreeNode rootNode = (DefaultMutableTreeNode) model.getHistory().getCurrent(); + LoggableElement rootElement = (LoggableElement) rootNode.getUserObject(); + MetaData data = rootElement.getMetaData(); + Version version = model.getSelectedVersion(); + if (version == null) { + // la version peut être null, ce qui veut dire que l'on vient d'un changement + // de node dans l'arbre de navigation et donc la version est celle du detai + version = detail.getVersion(); + } + boolean enabled = !(detail.getName().equals(data.getName()) && data.getVersion().equals(version)); + + String tooltip = !enabled ? null : _("simexplorer.action.detailToTree.tooltip", detail.getName() + " [" + version + "]"); + SimExplorerUIRefreshHelper.updateButton(ui.getDetailToTree(), enabled, tooltip); + } + + public static void refreshSynchroniseElementAction(JDetailTab ui, DetailTabModel model) { + MetaData detail = model.getDetail(); + boolean enabled = detail != null; + String tooltip = !enabled ? null : _("simexplorer.action.synchronize.tooltip", detail.getName() + " [" + model.getSelectedVersion() + "]"); + SimExplorerUIRefreshHelper.updateButton(ui.getShowTab_synchronize(), enabled, tooltip); + } + + protected static void refreshExportAction(JDetailTab ui, DetailTabModel model) { + MetaData detail = model.getDetail(); + LoggableElement sNode = model.getSelectedNode(); + boolean enabled = sNode != null && sNode instanceof ExplorationApplication; + String tooltip = !enabled ? null : _("simexplorer.action.export.tooltip", detail.getName() + " [" + model.getSelectedVersion() + "]"); + SimExplorerUIRefreshHelper.updateButton(ui.getExportElement(), enabled, tooltip); + } + + public static void resetHistory(JDetailTab ui, DetailTabModel model, DefaultComboBoxModel historyModel) { + historyModel.removeAllElements(); + LoggableElement selectedNode = model.getSelectedNode(); + Version[] versions = model.getVersions(); + boolean nodetail = versions == null || selectedNode == null; + if (nodetail) { + resetDetailPanel(ui); + } else { + ui.getDetailHeaderFromLocal().setVisible(!model.isRemote()); + ui.getDetailHeaderFromRemote().setVisible(model.isRemote()); + for (Version version : versions) { + historyModel.addElement(version); + } + boolean enabled = ui.getDetailVersions().getItemCount() > 1; + ui.getDetailVersions().setEnabled(enabled); + String text; + if (enabled) { + text = _("simexplorer.action.changeVersion.tooltip"); + } else { + text = null; + } + ui.getDetailVersions().setToolTipText(text); + } + // can not synchronize to tree + SimExplorerUIRefreshHelper.updateButton(ui.getDetailToTree(), false, null); + } + + public static void resetDetailPanel(final JDetailTab ui) { + //ui.getDetailHeaderFromLocal().setVisible(false); + //ui.getDetailHeaderFromRemote().setVisible(false); + ui.getDetailVersions().setVisible(false); + ui.getDetailHeader().setText(_("simexplorer.node.nodetail")); + ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.noattachments")); + JList listAttchments = ui.getDetailAttachments(); + listAttchments.clearSelection(); + DefaultListModel listModel = (DefaultListModel) listAttchments.getModel(); + listModel.setSize(0); + listModel.trimToSize(); + ui.getDetail().setVisible(false); + ((JDetailTableModel) ui.getDetailTable().getModel()).setData(null); + } + + public static void updateDetailNavigationTree(JDetailTab ui, HistoryModel<TreeNode> model) { + // push it in tree model + ((DefaultTreeModel) ui.getNavigationTree().getModel()).setRoot(model.getCurrent()); + // by default select the root node + ui.getNavigationTree().setSelectionRow(0); + boolean hasPrevious = model.size() > 1 && model.hastPrevious(); + SimExplorerUIRefreshHelper.updateButton(ui.getHistoryPrevious(), hasPrevious, hasPrevious ? _("simexplorer.action.historyPrevious.tooltip", model.getPrevious()) : null); + boolean hasNext = model.size() > 1 && model.hasNext(); + SimExplorerUIRefreshHelper.updateButton(ui.getHistoryNext(), hasNext, hasNext ? _("simexplorer.action.historyNext.tooltip", model.getNext()) : null); + } + + public static void updateDetailPanel(Integer index, final JDetailTab ui, DetailTabModel model, LoggableElement selectedNode) { + MetaData detail = model.getDetail(); + ui.getDetailVersions().setVisible(true); + ui.getDetailVersions().setSelectedIndex(index); + ui.getDetailHeader().setText(selectedNode.getMetaData().getName()); + ui.getDetailDescriptorsHeader().setText(_("simexplorer.node.descriptors", detail.getDescriptors().size())); + ui.getDetailType().setText(detail.getType()); + String s = detail.getDescription(); + String tooltip = s; + if (s.length() > 32) { + s = s.substring(0, 32) + "..."; + } + ui.getDetailDescription().setText(s); + if (!s.equals(tooltip)) { + ui.getDetailDescription().setToolTipText(tooltip); + } + //ui.getDetailName().setText(detail.getName()); + ui.getDetailCreationDate().setText(DATE_FORMAT.format(detail.getCreationDate())); + ui.getDetail().setVisible(true); + JTable table = ui.getDetailTable(); + ((JDetailTableModel) table.getModel()).setData(detail); + int nbDescriptorRows = table.getRowCount(); + + List<Attachment> attachments = detail.getAttachments(); + JList listAttachments = ui.getDetailAttachments(); + DefaultListModel listModel = (DefaultListModel) listAttachments.getModel(); + listModel.setSize(0); + listModel.trimToSize(); + int nbAttachmentRows; + if (attachments.isEmpty()) { + ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.noattachments")); + ui.getScrollAttachments().setVisible(false); + nbAttachmentRows = 0; + } else { + ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.attachments", attachments.size())); + for (Attachment attachment : attachments) { + listModel.addElement(attachment); + } + listAttachments.setSelectedIndex(0); + nbAttachmentRows = listModel.getSize(); + ui.getScrollAttachments().setVisible(true); + } + + int[] rows = computeRows(nbDescriptorRows, nbAttachmentRows); + + Dimension dimOneRow = table.getUI().getPreferredSize(table.getTableHeader()); + + ui.getScrollTable().setPreferredSize(new Dimension((int) dimOneRow.getWidth(), 2 + ((rows[0] + 1) * (4 + table.getFont().getSize())))); + //ui.getScrollTable().setPreferredSize(new Dimension((int) table.getSize().getWidth(), 2 + (nbDescriptorRows * (4 + table.getFont().getSize())))); + if (nbAttachmentRows > 0) { + Rectangle rect = listAttachments.getUI().getCellBounds(listAttachments, 0, 0); + ui.getScrollAttachments().setPreferredSize(new Dimension((int) rect.getWidth() - 4, (int) (3 + rows[1] * rect.getHeight()))); + } + + table.invalidate(); + listAttachments.invalidate(); + ui.getScrollPane().invalidate(); + ui.repaint(); + } + + protected static int[] computeRows(int nbDescriptorRows, int nbAttachmentRows) { + int[] result = new int[2]; + int max = 14; + int maxOne = max/2; + if (nbDescriptorRows == 0) { + result[0] = 0; + result[1] = nbAttachmentRows > max ? max : nbAttachmentRows; + return result; + } + if (nbAttachmentRows == 0) { + result[0] = nbDescriptorRows > max ? max : nbDescriptorRows; + result[1] = 0; + return result; + } + if (nbAttachmentRows < maxOne+1 && nbDescriptorRows < maxOne+1) { + result[0] = nbDescriptorRows; + result[1] = nbAttachmentRows; + return result; + } + if (nbDescriptorRows > maxOne && nbAttachmentRows > maxOne) { + result[0] = result[1] = maxOne; + return result; + } + if (nbDescriptorRows < maxOne+1) { + result[0] = nbDescriptorRows; + int i = max - nbDescriptorRows; + result[1] = nbAttachmentRows < i ? nbAttachmentRows : i; + return result; + } + if (nbAttachmentRows < maxOne+1) { + int i = max - nbAttachmentRows; + result[0] = nbDescriptorRows < i ? nbDescriptorRows : i; + result[1] = nbAttachmentRows; + return result; + } + throw new IllegalStateException("can not come her :)"); + } + + protected DetailTabRefreshHelper() { + // do not instanciate me please + } +} \ No newline at end of file Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerUIRefreshHelper.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerUIRefreshHelper.java 2008-02-14 07:44:15 UTC (rev 951) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerUIRefreshHelper.java 2008-02-14 07:45:03 UTC (rev 952) @@ -18,16 +18,11 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing; -import fr.cemagref.simexplorer.is.attachment.Attachment; -import fr.cemagref.simexplorer.is.entities.data.ExplorationApplication; 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.SimExplorer; import fr.cemagref.simexplorer.is.ui.swing.actions.util.ChangeI18nAbstractAction; import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; -import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; -import fr.cemagref.simexplorer.is.ui.swing.model.JDetailTableModel; import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeHelper; import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeNode; @@ -38,21 +33,13 @@ import org.codelutin.i18n.LanguageEnum; import javax.swing.AbstractButton; -import javax.swing.DefaultComboBoxModel; -import javax.swing.DefaultListModel; import javax.swing.JComboBox; -import javax.swing.JList; import javax.swing.JTabbedPane; -import javax.swing.JTable; import javax.swing.JTree; import javax.swing.SwingUtilities; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; -import javax.swing.tree.DefaultMutableTreeNode; -import java.awt.Dimension; -import java.awt.Rectangle; import java.text.SimpleDateFormat; -import java.util.List; import java.util.regex.Matcher; /** @@ -210,89 +197,6 @@ //}); } - /** - * Rafraichit les actions d'un node dans l'arbre de navigation - * - * @param ui l'onglet de détail - * @param model le model de d'onglet detail - * @param node le node sélectionné dans l'arbre de navigation - */ - public static void refreshDetailActions(JDetailTab ui, DetailTabModel model, LoggableElementTreeNode node) { - // refresh synchronize action button - refreshSynchroniseElementAction(ui, model); - // refresh download LoggableElement button - refreshDownloadElementAction(ui, model, node); - // refresh delete button - refreshDeleteElementAction(ui, model); - // refresh export button - refreshExportAction(ui, model); - // refresh download Attachment button - refreshDownloadAttachmentAction(ui, model); - } - - public static void refreshTreeDetailActions(JDetailTab ui, LoggableElementTreeNode node) { - String tooltip; - boolean enabled = node != null && !node.isLeaf() && node.getChildCount() > 0; - tooltip = !enabled ? null : _("simexplorer.action.collapseAll.tooltip", node.getUserObject()); - updateButton(ui.getCollapseAllDetail(), enabled, tooltip); - tooltip = !enabled ? null : _("simexplorer.action.expandAll.tooltip", node.getUserObject()); - updateButton(ui.getExpandAllDetail(), enabled, tooltip); - } - - public static void refreshDownloadElementAction(JDetailTab ui, DetailTabModel model, LoggableElementTreeNode node) { - MetaData detail = model.getDetail(); - boolean enabled = detail != null || LoggableElementTreeHelper.canDownload(node); - String tooltip = !enabled ? null : _("simexplorer.action.downloadLoggableElement.tooltip", detail == null ? node.getUserObject() : detail.getName() + " [" + model.getSelectedVersion() + "]"); - updateButton(ui.getDownloadElement(), enabled, tooltip); - } - - protected static void refreshDeleteElementAction(JDetailTab ui, DetailTabModel model) { - MetaData detail = model.getDetail(); - boolean enabled = detail != null; - String tooltip = !enabled ? null : _("simexplorer.action.deleteLoggableElement.tooltip", detail.getName() + " [" + model.getSelectedVersion() + "]"); - updateButton(ui.getDeleteElement(), enabled, tooltip); - } - - public static void refreshDownloadAttachmentAction(JDetailTab ui, DetailTabModel model) { - Attachment attachment = model.getSelectedAttachment(); - MetaData detail = model.getDetail(); - boolean enabled = detail != null && attachment != null; - String tooltip = !enabled ? null : _("simexplorer.action.downloadAttachment.tooltip", attachment); - updateButton(ui.getDownloadAttachment(), enabled, tooltip); - } - - public static void refreshDetailToTreeAction(JDetailTab ui, DetailTabModel model) { - MetaData detail = model.getDetail(); - DefaultMutableTreeNode rootNode = (DefaultMutableTreeNode) model.getHistory().getCurrent(); - LoggableElement rootElement = (LoggableElement) rootNode.getUserObject(); - MetaData data = rootElement.getMetaData(); - Version version = model.getSelectedVersion(); - if (version==null) { - // la version peut être null, ce qui veut dire que l'on vient d'un changement - // de node dans l'arbre de navigation et donc la version est celle du detai - version = detail.getVersion(); - } - boolean enabled = !(detail.getName().equals(data.getName()) && data.getVersion().equals(version)); - - String tooltip = !enabled ? null : _("simexplorer.action.detailToTree.tooltip", detail.getName() + " [" + version + "]"); - updateButton(ui.getDetailToTree(), enabled, tooltip); - } - - public static void refreshSynchroniseElementAction(JDetailTab ui, DetailTabModel model) { - MetaData detail = model.getDetail(); - boolean enabled = detail != null; - String tooltip = !enabled ? null : _("simexplorer.action.synchronize.tooltip", detail.getName() + " [" + model.getSelectedVersion() + "]"); - updateButton(ui.getShowTab_synchronize(), enabled, tooltip); - } - - protected static void refreshExportAction(JDetailTab ui, DetailTabModel model) { - MetaData detail = model.getDetail(); - LoggableElement sNode = model.getSelectedNode(); - boolean enabled = sNode != null && sNode instanceof ExplorationApplication; - String tooltip = !enabled ? null : _("simexplorer.action.export.tooltip", detail.getName() + " [" + model.getSelectedVersion() + "]"); - updateButton(ui.getExportElement(), enabled, tooltip); - } - public static void refreshExportElementToRemoteAction(JSynchronizeTab ui, SynchronizeTabModel model) { LoggableElement sNode = model.getLocalSelectedNode(); boolean enabled = sNode != null; @@ -396,155 +300,11 @@ ui.getCurrentPage().setEnabled(b); } - public static void resetHistory(JDetailTab ui, DetailTabModel model, DefaultComboBoxModel historyModel) { - historyModel.removeAllElements(); - LoggableElement selectedNode = model.getSelectedNode(); - Version[] versions = model.getVersions(); - boolean nodetail = versions == null || selectedNode == null; - // and the selection - if (nodetail) { - resetDetailPanel(ui); - } else { - for (Version version : versions) { - historyModel.addElement(version); - } - boolean enabled = ui.getDetailVersions().getItemCount() > 1; - ui.getDetailVersions().setEnabled(enabled); - String text; - if (enabled) { - text = _("simexplorer.action.changeVersion.tooltip"); - } else { - text = null; - } - ui.getDetailVersions().setToolTipText(text); - } - // can not synchronize to tree - updateButton(ui.getDetailToTree(), false, null); - } - - public static void updateDetailNavigationTree(JDetailTab ui, HistoryModel<TreeNode> model) { - // push it in tree model - ((DefaultTreeModel) ui.getNavigationTree().getModel()).setRoot(model.getCurrent()); - // by default select the root node - ui.getNavigationTree().setSelectionRow(0); - boolean hasPrevious = model.size() > 1 && model.hastPrevious(); - updateButton(ui.getHistoryPrevious(), hasPrevious, hasPrevious? _("simexplorer.action.historyPrevious.tooltip",model.getPrevious()) : null); - boolean hasNext = model.size() > 1 && model.hasNext(); - updateButton(ui.getHistoryNext(), hasNext, hasNext ? _("simexplorer.action.historyNext.tooltip",model.getNext()) : null); - } - - public static void resetDetailPanel(final JDetailTab ui) { - ui.getDetailHeader().setText(_("simexplorer.node.nodetail")); - ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.noattachments")); - JList listAttchments = ui.getDetailAttachments(); - listAttchments.clearSelection(); - DefaultListModel listModel = (DefaultListModel) listAttchments.getModel(); - listModel.setSize(0); - listModel.trimToSize(); - ui.getDetail().setVisible(false); - ((JDetailTableModel) ui.getDetailTable().getModel()).setData(null); - } - - public static void updateDetailPanel(Integer index, final JDetailTab ui, DetailTabModel model, LoggableElement selectedNode) { - MetaData detail = model.getDetail(); - ui.getDetailVersions().setSelectedIndex(index); - ui.getDetailHeader().setText(_("simexplorer.node.detail", selectedNode.getMetaData().getName(), model.getSelectedVersion())); - ui.getDetailDescriptorsHeader().setText(_("simexplorer.node.descriptors", detail.getDescriptors().size())); - ui.getDetailType().setText(detail.getType()); - String s = detail.getDescription(); - String tooltip = s; - if (s.length() > 32) { - s = s.substring(0, 32) + "..."; - } - ui.getDetailDescription().setText(s); - if (!s.equals(tooltip)) { - ui.getDetailDescription().setToolTipText(tooltip); - } - ui.getDetailName().setText(detail.getName()); - ui.getDetailCreationDate().setText(DATE_FORMAT.format(detail.getCreationDate())); - ui.getDetail().setVisible(true); - JTable table = ui.getDetailTable(); - ((JDetailTableModel) table.getModel()).setData(detail); - int nbDescriptorRows = table.getRowCount(); - - List<Attachment> attachments = detail.getAttachments(); - JList listAttachments = ui.getDetailAttachments(); - DefaultListModel listModel = (DefaultListModel) listAttachments.getModel(); - listModel.setSize(0); - listModel.trimToSize(); - int nbAttachmentRows; - if (attachments.isEmpty()) { - ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.noattachments")); - ui.getScrollAttachments().setVisible(false); - nbAttachmentRows = 0; - } else { - ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.attachments", attachments.size())); - for (Attachment attachment : attachments) { - listModel.addElement(attachment); - } - listAttachments.setSelectedIndex(0); - nbAttachmentRows = listModel.getSize(); - ui.getScrollAttachments().setVisible(true); - } - - int[] rows = computeRows(nbDescriptorRows, nbAttachmentRows); - - Dimension dimOneRow = table.getUI().getPreferredSize(table.getTableHeader()); - - ui.getScrollTable().setPreferredSize(new Dimension((int) dimOneRow.getWidth(), 2 + ((rows[0] + 1) * (4 + table.getFont().getSize())))); - //ui.getScrollTable().setPreferredSize(new Dimension((int) table.getSize().getWidth(), 2 + (nbDescriptorRows * (4 + table.getFont().getSize())))); - if (nbAttachmentRows > 0) { - Rectangle rect = listAttachments.getUI().getCellBounds(listAttachments, 0, 0); - ui.getScrollAttachments().setPreferredSize(new Dimension((int) rect.getWidth() - 4, (int) (3 + rows[1] * rect.getHeight()))); - } - - table.invalidate(); - listAttachments.invalidate(); - ui.getScrollPane().invalidate(); - ui.repaint(); - } - protected static void updateButton(AbstractButton button, boolean enabled, String tooltip) { button.setEnabled(enabled); button.setToolTipText(tooltip); } - protected static int[] computeRows(int nbDescriptorRows, int nbAttachmentRows) { - int[] result = new int[2]; - if (nbDescriptorRows == 0) { - result[0] = 0; - result[1] = nbAttachmentRows > 10 ? 10 : nbAttachmentRows; - return result; - } - if (nbAttachmentRows == 0) { - result[0] = nbDescriptorRows > 10 ? 10 : nbDescriptorRows; - result[1] = 0; - return result; - } - if (nbAttachmentRows < 6 && nbDescriptorRows < 6) { - result[0] = nbDescriptorRows; - result[1] = nbAttachmentRows; - return result; - } - if (nbDescriptorRows > 5 && nbAttachmentRows > 5) { - result[0] = result[1] = 5; - return result; - } - if (nbDescriptorRows < 6) { - result[0] = nbDescriptorRows; - int i = 10 - nbDescriptorRows; - result[1] = nbAttachmentRows < i ? nbAttachmentRows : i; - return result; - } - if (nbAttachmentRows < 6) { - int i = 10 - nbAttachmentRows; - result[0] = nbDescriptorRows < i ? nbDescriptorRows : i; - result[1] = nbAttachmentRows; - return result; - } - throw new IllegalStateException("can not come her :)"); - } - protected SimExplorerUIRefreshHelper() { // do not instanciate me please } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java 2008-02-14 07:44:15 UTC (rev 951) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java 2008-02-14 07:45:03 UTC (rev 952) @@ -21,12 +21,12 @@ import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerUIRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction; import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; +import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeHelper; import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeNode; -import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeHelper; import javax.swing.tree.TreeNode; import java.awt.event.ActionEvent; @@ -79,7 +79,7 @@ TreeNode root = LoggableElementTreeHelper.buildLoggableElementNode(model.getRootNode()); model.getHistory().add(root); // push it in tree - SimExplorerUIRefreshHelper.updateDetailNavigationTree((JDetailTab) getUI(), model.getHistory()); + DetailTabRefreshHelper.updateDetailNavigationTree((JDetailTab) getUI(), model.getHistory()); } @Override Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryNextAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryNextAction.java 2008-02-14 07:44:15 UTC (rev 951) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryNextAction.java 2008-02-14 07:45:03 UTC (rev 952) @@ -19,8 +19,8 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; +import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerUIRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction; import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; @@ -61,7 +61,7 @@ protected void doAction(ActionEvent e) throws Exception { TreeNode node = model.getHistory().gotoNext(); model.setRootNode((LoggableElement) ((DefaultMutableTreeNode) node).getUserObject()); - SimExplorerUIRefreshHelper.updateDetailNavigationTree((JDetailTab) getUI(), model.getHistory()); + DetailTabRefreshHelper.updateDetailNavigationTree((JDetailTab) getUI(), model.getHistory()); } @Override Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryPreviousAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryPreviousAction.java 2008-02-14 07:44:15 UTC (rev 951) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HistoryPreviousAction.java 2008-02-14 07:45:03 UTC (rev 952) @@ -19,8 +19,8 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; +import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerUIRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction; import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; @@ -28,10 +28,7 @@ import javax.swing.tree.TreeNode; import java.awt.event.ActionEvent; -/** - * - * @author chemit - */ +/** @author chemit */ @jaxx.runtime.builder.ActionConfig( actionCommand = "historyPrevious", name = "simexplorer.action.historyPrevious", @@ -64,7 +61,7 @@ protected void doAction(ActionEvent e) throws Exception { TreeNode node = model.getHistory().gotoPrevious(); model.setRootNode((LoggableElement) ((DefaultMutableTreeNode) node).getUserObject()); - SimExplorerUIRefreshHelper.updateDetailNavigationTree((JDetailTab) getUI(), model.getHistory()); + DetailTabRefreshHelper.updateDetailNavigationTree((JDetailTab) getUI(), model.getHistory()); } @Override Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2008-02-14 07:44:15 UTC (rev 951) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2008-02-14 07:45:03 UTC (rev 952) @@ -22,8 +22,8 @@ import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.entities.metadata.Version; import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerUIRefreshHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.ShowTabAbstractAction; import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeHelper; @@ -86,11 +86,11 @@ } protected void initUI(JDetailTab ui, DetailTabModel model) { - SimExplorerUIRefreshHelper.refreshTreeDetailActions(ui, null); + DetailTabRefreshHelper.refreshTreeDetailActions(ui, null); // create navigation tree TreeNode root = LoggableElementTreeHelper.buildLoggableElementNode(model.getRootNode()); model.getHistory().add(root); - SimExplorerUIRefreshHelper.updateDetailNavigationTree(ui, model.getHistory()); + DetailTabRefreshHelper.updateDetailNavigationTree(ui, model.getHistory()); } /** @@ -115,7 +115,7 @@ //TODO on ne doit pas modifier les ui dans cette méthode // on rafraichit toujours ici les actions de l'arbre qui sont // indépendantes du model et dépendent juste dunoeud sélectionné - SimExplorerUIRefreshHelper.refreshTreeDetailActions(getTabUI(), node); + DetailTabRefreshHelper.refreshTreeDetailActions(getTabUI(), node); Object o = node == null ? null : node.getUserObject(); // always reset version index, in that way, if there is no more @@ -173,18 +173,18 @@ versionListener.setEnabled(false); attachmentListener.setEnabled(false); // refresh ui - SimExplorerUIRefreshHelper.resetHistory(ui, model, historyModel); + DetailTabRefreshHelper.resetHistory(ui, model, historyModel); // push back previous state of version listener versionListener.setEnabled(wasEnable); attachmentListener.setEnabled(wasEnable2); // update actions on toolbar LoggableElementTreeNode node = LoggableElementTreeHelper.getSelectedNode(ui.getNavigationTree()); - SimExplorerUIRefreshHelper.refreshDetailActions(ui, model, node); + DetailTabRefreshHelper.refreshDetailActions(ui, model, node); LoggableElementTreeNode rootNode = LoggableElementTreeHelper.getRootNode(ui.getNavigationTree()); if (model.getDetail() != null && !node.equals(rootNode)) { // refresh detail to tree button only if required - SimExplorerUIRefreshHelper.refreshDetailToTreeAction(ui, model); + DetailTabRefreshHelper.refreshDetailToTreeAction(ui, model); } } } @@ -232,7 +232,7 @@ model.setSelectedAttachmentIndex(selectedAttachment); // refresh detail to tree button - SimExplorerUIRefreshHelper.refreshDetailToTreeAction(ui, model); + DetailTabRefreshHelper.refreshDetailToTreeAction(ui, model); } /** @@ -257,16 +257,16 @@ attachmentListener.setEnabled(false); if (index == null || index == -1) { - SimExplorerUIRefreshHelper.resetDetailPanel(ui); + DetailTabRefreshHelper.resetDetailPanel(ui); } else { - SimExplorerUIRefreshHelper.updateDetailPanel(index, ui, model, selectedNode); + DetailTabRefreshHelper.updateDetailPanel(index, ui, model, selectedNode); } setEnabled(wasEnable); attachmentListener.setEnabled(wasEnable2); ui.getDetailAttachments().setSelectedIndex(0); // update actions on toolbar LoggableElementTreeNode node = LoggableElementTreeHelper.getSelectedNodeOrRootNode(ui.getNavigationTree()); - SimExplorerUIRefreshHelper.refreshDetailActions(ui, model, node); + DetailTabRefreshHelper.refreshDetailActions(ui, model, node); } public boolean isEnabled() { @@ -321,7 +321,7 @@ // change the selection, and we don't want the model to be updated // again setEnabled(false); - SimExplorerUIRefreshHelper.refreshDownloadAttachmentAction(ui, model); + DetailTabRefreshHelper.refreshDownloadAttachmentAction(ui, model); setEnabled(wasEnable); }