Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 8189b93a by Tony CHEMIT at 2017-03-29T09:49:40+02:00 Mettre une largeur minimum sur l'arbre de navigation (See #751) - - - - - 217017d7 by Tony CHEMIT at 2017-03-29T13:00:22+02:00 Amélioration du header de l'arbre de navigation (See #751) - - - - - 83996403 by Tony CHEMIT at 2017-03-29T13:02:10+02:00 Code couleurs (see #756) - - - - - 4 changed files: - application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java - application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jaxx - application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jcss - application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeaderHandler.java Changes: ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java @@ -34,6 +34,7 @@ import fr.ird.observe.application.swing.ui.content.ContentUIManager; import fr.ird.observe.application.swing.ui.content.ObserveActionMap; import fr.ird.observe.application.swing.ui.tree.ObserveNavigationTreeShowPopupAction; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeHeader; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; @@ -41,24 +42,22 @@ import fr.ird.observe.application.swing.ui.tree.navigation.nodes.StringNavigatio import fr.ird.observe.application.swing.ui.util.ObserveSwingValidatorMessageTableModel; import fr.ird.observe.application.swing.ui.util.ObserveValidatorMessageTableRenderer; import fr.ird.observe.services.dto.constants.ReferentialLocale; -import org.nuiton.jaxx.runtime.context.JAXXInitialContext; -import org.nuiton.jaxx.widgets.error.ErrorDialogUI; -import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel; -import org.nuiton.jaxx.validator.swing.SwingValidatorUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.i18n.I18n; +import org.nuiton.jaxx.runtime.context.JAXXInitialContext; +import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel; +import org.nuiton.jaxx.validator.swing.SwingValidatorUtil; +import org.nuiton.jaxx.widgets.error.ErrorDialogUI; -import javax.swing.AbstractButton; -import javax.swing.JComponent; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.LineBorder; import javax.swing.event.TreeSelectionEvent; import javax.swing.tree.TreePath; -import java.awt.Component; -import java.awt.Container; -import java.awt.Cursor; +import java.awt.*; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; @@ -427,6 +426,38 @@ public class ObserveMainUIInitializer { ui.getNavigationView().addMouseListener(mouseAdapter); ui.getNavigation().addMouseListener(mouseAdapter); ui.getNavigationTreeHeader().addMouseListener(mouseAdapter); + + ui.getNavigationView().setRightDecoration(ui.getNavigationTreeHeader().getToolbar()); + ui.getNavigationView().addComponentListener(new ComponentAdapter() { + + @Override + public void componentResized(ComponentEvent e) { + + JComponent source = (JComponent) e.getSource(); + + NavigationTreeHeader actions = ui.getNavigationTreeHeader(); + + Dimension preferredLayoutSize = actions.getLayout().preferredLayoutSize(actions); + + Dimension showLonglineSize = actions.getShowLongline().getSize(); + Dimension showSeineSize = actions.getShowSeine().getSize(); + Dimension showReferential = actions.getShowReferential().getSize(); + Dimension showEmpty = actions.getShowEmptyProgram().getSize(); + int minWidth = 18 + (int) Math.max(showLonglineSize.getWidth() + showSeineSize.getWidth(), showReferential.getWidth() + showEmpty.getWidth()); + source.setMinimumSize(new Dimension(minWidth, (int) source.getSize().getHeight())); + log.debug("Header resized to minumun: " + source.getMinimumSize()); + + int maxWidth = ui.getNavigationView().getWidth() - 10; + + int currentWidth = (int) preferredLayoutSize.getWidth(); + int height = 32; + if (currentWidth > maxWidth) { + height += 32; + } + actions.setPreferredSize(new Dimension(maxWidth, height)); + + } + }); } protected void init(ObserveActionMap actionMap, AbstractButton editor) { @@ -499,7 +530,7 @@ public class ObserveMainUIInitializer { /** * Nettoye des ui tout ce qui concerne un modèle de navigation. - * + * <p> * <b>Note:</b> cette méthode doit être appelée avant tout rechargement de modèle de naivgation. */ public void cleanNavigationUI() { @@ -522,7 +553,7 @@ public class ObserveMainUIInitializer { /** * Charge dans l'ui un nouveau modèle de navigation. - * + * <p> * <b>Note:</b> cette méthode doit être appelée après tout rechargement de modèle de naivgation. **/ public void loadNavigationUI() { ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jaxx ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jaxx @@ -17,36 +17,22 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<JPanel layout='{new BorderLayout()}'> +<JPanel layout='{new FlowLayout(FlowLayout.LEFT, 2, 2)}'> <import> java.awt.FlowLayout </import> - <JToolBar constraints='BorderLayout.WEST' layout="{new FlowLayout(FlowLayout.CENTER, 2, 2)}"> - <JToggleButton id='showSeine' onActionPerformed="handler.tryToUpdateNavigationTree()"/> - <JToggleButton id='showLongline' onActionPerformed="handler.tryToUpdateNavigationTree()"/> - <JToggleButton id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/> - <JToggleButton id='showEmptyProgram' onActionPerformed="handler.tryToUpdateNavigationTree()"/> - </JToolBar> - - <!-- label --> - <String id='labelText' javaBean='null'/> + <JToggleButton id='showSeine' onActionPerformed="handler.tryToUpdateNavigationTree()"/> + <JToggleButton id='showLongline' onActionPerformed="handler.tryToUpdateNavigationTree()"/> + <JToggleButton id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/> + <JToggleButton id='showEmptyProgram' onActionPerformed="handler.tryToUpdateNavigationTree()"/> - <!-- tree --> <NavigationTree id='tree' javaBean='new NavigationTree()'/> - <JTextField id="search" visible="false" constraints='BorderLayout.CENTER' - onKeyReleased="handler.search(search.getText())"/> - - <!--<JLabel id="label" constraints='BorderLayout.CENTER'/>--> - - <JToolBar id='toolbar' constraints='BorderLayout.EAST'> - - <!-- les boutons pour grouper/déplier tout l'arbre --> + <JToolBar id='toolbar'> <JButton id='colapseAll' onActionPerformed='handler.collapseAll()'/> <JButton id='expandAll' onActionPerformed='handler.expandAll()'/> - </JToolBar> </JPanel> ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jcss ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jcss @@ -42,10 +42,6 @@ toolTipText:"observe.enum.fr.ird.observe.services.dto.constants.ObserveModelType.EMPTY.tip"; } -#label { - text:{getLabelText()}; -} - JToggleButton { focusable:false; focusPainted:false; ===================================== application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeaderHandler.java ===================================== --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeaderHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeaderHandler.java @@ -69,10 +69,10 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead @Override public void afterInit(NavigationTreeHeader ui) { - ui.getShowSeine().setIcon(UIHelper.getUIManagerIcon("navigation." + TripSeineDto.class.getName() + "-16")); - ui.getShowLongline().setIcon(UIHelper.getUIManagerIcon("navigation." + TripLonglineDto.class.getName() + "-16")); + ui.getShowSeine().setIcon(UIHelper.getUIManagerIcon("navigation." + ProgramDto.class.getName() + "-16")); + ui.getShowLongline().setIcon(UIHelper.getUIManagerIcon("navigation." + ProgramDto.class.getName() + "-16")); ui.getShowReferential().setIcon(UIHelper.getUIManagerIcon("navigation.referentiel-16")); - ui.getShowEmptyProgram().setIcon(UIHelper.getUIManagerIcon("navigation." + ProgramDto.class.getName() + "-16")); + ui.getShowEmptyProgram().setIcon(UIHelper.getUIManagerIcon("navigation." + TripSeineDto.class.getName() + "-16")); NavigationTree tree = ui.getTree(); TreeSearchable searchable = new TreeSearchable(tree); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/2b989765bbb1a32f508f77298a3...