View Javadoc
1   package fr.ifremer.tutti.ui.swing.content.validation.tree;
2   
3   /*
4    * #%L
5    * Tutti :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2012 - 2014 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU General Public License as
13   * published by the Free Software Foundation, either version 3 of the
14   * License, or (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU General Public
22   * License along with this program.  If not, see
23   * <http://www.gnu.org/licenses/gpl-3.0.html>.
24   * #L%
25   */
26  
27  import fr.ifremer.tutti.persistence.entities.data.Cruise;
28  import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
29  import org.nuiton.decorator.Decorator;
30  
31  import javax.swing.JLabel;
32  import javax.swing.JTree;
33  import javax.swing.tree.DefaultTreeCellRenderer;
34  import java.awt.Component;
35  
36  import static org.nuiton.i18n.I18n.t;
37  
38  /**
39   * Created on 7/9/14.
40   *
41   * @author Tony Chemit - chemit@codelutin.com
42   * @since 3.6
43   */
44  public class ValidationTreeCellRenderer extends DefaultTreeCellRenderer {
45  
46      private static final long serialVersionUID = 1L;
47  
48      private final Decorator<Cruise> cruiseDecorator;
49  
50      private final Decorator<FishingOperation> fishingOperationDecorator;
51  
52      public ValidationTreeCellRenderer(Decorator<Cruise> cruiseDecorator, Decorator<FishingOperation> fishingOperationDecorator) {
53          this.cruiseDecorator = cruiseDecorator;
54          this.fishingOperationDecorator = fishingOperationDecorator;
55      }
56  
57      @Override
58      public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
59          JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
60  
61          if (value != null) {
62              if (value instanceof CruiseTreeNode) {
63                  CruiseTreeNode node = (CruiseTreeNode) value;
64                  String text = cruiseDecorator.toString(node.getUserObject());
65                  label.setText(text);
66                  label.setToolTipText(text);
67                  label.setIcon(node.getIcon());
68  
69              } else if (value instanceof OperationTreeNode) {
70                  OperationTreeNode node = (OperationTreeNode) value;
71                  String text = fishingOperationDecorator.toString(node.getUserObject());
72                  label.setText(text);
73                  label.setToolTipText(text);
74                  label.setIcon(node.getIcon());
75  
76              } else if (value instanceof MessageTreeNode) {
77                  MessageTreeNode node = (MessageTreeNode) value;
78                  String text = t(node.getUserObject());
79                  label.setText(text);
80                  label.setToolTipText(text);
81                  label.setIcon(node.getIcon());
82              }
83          }
84          return label;
85      }
86  }