Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 9c6b4c4f by Tony Chemit at 2020-07-26T13:01:38+02:00 Défauts d'affichage dans l'arbre - Closes #1580 - - - - - 5 changed files: - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTree.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTreeCellRenderer.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTreeModel.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/nodes/NavigationTreeNodeSupport.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/nodes/ObserveTreeNodeSupport.java Changes: ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTree.java ===================================== @@ -93,8 +93,7 @@ public class NavigationTree extends JXTree { openNode(e.getPath()); }); - NavigationTreeCellRenderer renderer = new NavigationTreeCellRenderer(); - setCellRenderer(renderer); + setCellRenderer(new NavigationTreeCellRenderer()); ClientUIContext clientUIContext = ClientUIContextApplicationComponent.value(); ObserveEditModel navigationEdit = clientUIContext.getObserveEditModel(); @@ -108,6 +107,15 @@ public class NavigationTree extends JXTree { ); } +// public boolean getScrollableTracksViewportWidth() { +// return true; +// } + +// @Override +// public boolean isFixedRowHeight() { +// return true; +// } + @Override public void updateUI() { setSelectionModel(new NavigationTreeSelectionModel()); ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTreeCellRenderer.java ===================================== @@ -1,40 +1,13 @@ package fr.ird.observe.client.datasource.editor.tree.navigation; -/*- - * #%L - * ObServe :: Client DataSource Editor API - * %% - * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io - * %% - * 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 3 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, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.jdesktop.swingx.renderer.CellContext; +import org.jdesktop.swingx.renderer.DefaultTreeRenderer; +import org.jdesktop.swingx.renderer.IconValue; +import org.jdesktop.swingx.renderer.LabelProvider; import org.jdesktop.swingx.renderer.StringValue; -import org.jdesktop.swingx.tree.DefaultXTreeCellRenderer; import javax.swing.Icon; -import javax.swing.JLabel; -import javax.swing.JTree; -import javax.swing.SwingUtilities; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; /** * Created on 14/11/16. @@ -42,78 +15,41 @@ import java.awt.Dimension; * @author Tony Chemit - dev@tchemit.fr * @since 6.0 */ -public class NavigationTreeCellRenderer extends DefaultXTreeCellRenderer implements StringValue { +public class NavigationTreeCellRenderer extends DefaultTreeRenderer { - /** Logger */ - private static final Logger log = LogManager.getLogger(NavigationTreeCellRenderer.class); - -// @Override -// public Color getBackgroundSelectionColor() { -// return null; -// } -// -// @Override -// public Color getBackgroundNonSelectionColor() { -// // Fixes http://forge.codelutin.com/issues/830 for jdk 7 -// return Color.WHITE; -// } + public NavigationTreeCellRenderer() { + super(new NavigationTreeLabelProvider()); + } - @Override - public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { + private static class NavigationTreeStringIconValue implements StringValue, IconValue { - if (!(tree.getModel() instanceof NavigationTreeModel)) { - Component rendererComponent; - rendererComponent = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); - return rendererComponent; + @Override + public Icon getIcon(Object value) { + NavigationTreeNodeSupport<?> n = (NavigationTreeNodeSupport<?>) value; + return n.getIcon(); } - // get the icon to set for the node - NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) value; - - Icon icon = node.getIcon(); + @Override + public String getString(Object value) { + NavigationTreeNodeSupport<?> n = (NavigationTreeNodeSupport<?>) value; + return n.toString(); + } + } - if (!sel) { + private static class NavigationTreeLabelProvider extends LabelProvider { - Color color = node.getColor(); - if (log.isTraceEnabled()) { - log.trace("===" + color + " for node " + node.getDataType() + " - " + node.getId()); - } - setTextNonSelectionColor(color); + public NavigationTreeLabelProvider() { + super(new NavigationTreeStringIconValue()); } - String text = node.getText(); - if (log.isTraceEnabled()) { - log.trace("===" + text + " for node " + node.getDataType() + " - " + node.getId()); - } - JLabel comp = (JLabel) super.getTreeCellRendererComponent(tree, text, sel, expanded, leaf, row, hasFocus); - comp.setToolTipText(text); - comp.setIcon(icon); - Dimension size = comp.getPreferredSize(); - double height = size.getHeight(); - if (height > 50) { - log.error(String.format("Size is amazing: %s for node: %s", size, text)); - Dimension newSize = new Dimension((int) size.getWidth(), 32); - comp.setSize(newSize); - comp.setPreferredSize(newSize); - } else { - int stringWidth = SwingUtilities.computeStringWidth(comp.getFontMetrics(comp.getFont()), text); - if (size.getWidth() < stringWidth) { - log.error(String.format("Size is too low: %s for node: %s", size, text)); - Dimension newSize = new Dimension(stringWidth + 5, (int) height); - comp.setPreferredSize(newSize); + @Override + protected void configureVisuals(CellContext context) { + NavigationTreeNodeSupport<?> value = (NavigationTreeNodeSupport<?>) context.getValue(); + if (!context.isSelected()) { + defaultVisuals.setForeground(value.getColor()); } + super.configureVisuals(context); } - return comp; - } - - @Override - public String getString(Object value) { - NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) value; - return node.getText(); - } - @Override - protected String paramString() { - return "Nope"; } } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTreeModel.java ===================================== @@ -24,12 +24,10 @@ package fr.ird.observe.client.datasource.editor.tree.navigation; import fr.ird.observe.client.configuration.ClientConfig; import fr.ird.observe.client.configuration.NavigationTreeConfigBean; -import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.ClassNavigationTreeNode; import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.NavigationTreeModelInitializer; import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.RootNavigationTreeNode; -import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.StringNavigationTreeNodeSupport; import fr.ird.observe.client.datasource.editor.tree.navigation.nodes.WithChildsToReload; import fr.ird.observe.navigation.model.DtoModelNavigationModel; import fr.ird.observe.navigation.model.ObserveNavigationNode; ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/nodes/NavigationTreeNodeSupport.java ===================================== @@ -124,7 +124,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor this.loaded = loaded; } - public NavigationTreeNodeSupport findChildById(String id) { + public NavigationTreeNodeSupport<?> findChildById(String id) { if (id == null) { // id null ? donc rien a faire @@ -147,9 +147,9 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration children = children(); + Enumeration<?> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) children.nextElement(); + NavigationTreeNodeSupport<?> node = (NavigationTreeNodeSupport<?>) children.nextElement(); if (id.equals(node.getId()) || (node.getUserObject() instanceof String && id.equals(node.getUserObject()))) { return node; } @@ -158,7 +158,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor return null; } - public NavigationTreeNodeSupport findChildByType(Class<?> childType) { + public NavigationTreeNodeSupport<?> findChildByType(Class<?> childType) { if (childType.isAssignableFrom(getClass())) { @@ -177,9 +177,9 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration children = children(); + Enumeration<?> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) children.nextElement(); + NavigationTreeNodeSupport<?> node = (NavigationTreeNodeSupport<?>) children.nextElement(); if (childType.isAssignableFrom(node.getClass())) { return node; } @@ -202,30 +202,6 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor return isOpen() ? Color.BLACK : Color.GRAY; } -// public JMenuItem toMenuItem(SelectNode action, JAXXObject ui) { -// -// JMenuItem mi = new JMenuItem(); -// AbstractAction a = new AbstractAction() { -// -// @Override -// public void actionPerformed(ActionEvent e) { -// if (log.isInfoEnabled()) { -// log.info("Select action from menuItem: " + e.getSource()); -// } -// action.actionPerformed(mi); -// } -// }; -// mi.setAction(a); -// mi.setText(getText().trim()); -// ObserveKeyStrokes.addKeyStroke(mi, ObserveKeyStrokes.KEY_STROKE_PRESSED_ENTER); -// mi.setIcon(getIcon(true)); -// mi.setForeground(getColor()); -// mi.setBackground(Color.WHITE); -// mi.putClientProperty("node", this); -// mi.putClientProperty("ui", ui); -// return mi; -// } - public NavigationTreeNodeSupport<?> findChildByModelNode(ObserveNavigationNode<?> node) { if (!isLoaded()) { @@ -238,7 +214,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor String id = node.getId(); Class<?> type = node.getType(); - Enumeration children = children(); + Enumeration<?> children = children(); while (children.hasMoreElements()) { NavigationTreeNodeSupport<?> child = (NavigationTreeNodeSupport<?>) children.nextElement(); if (child instanceof ReferenceNavigationTreeNodeSupport<?, ?>) { ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/nodes/ObserveTreeNodeSupport.java ===================================== @@ -67,4 +67,8 @@ public abstract class ObserveTreeNodeSupport<O> extends DefaultMutableTreeNode { return servicesProviderSupplier.get(); } + @Override + public String toString() { + return getText(); + } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/9c6b4c4fc789d575df29629f8b... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/9c6b4c4fc789d575df29629f8b... You're receiving this email because of your account on gitlab.com.