001 /*
002 * This file is part of McIDAS-V
003 *
004 * Copyright 2007-2013
005 * Space Science and Engineering Center (SSEC)
006 * University of Wisconsin - Madison
007 * 1225 W. Dayton Street, Madison, WI 53706, USA
008 * https://www.ssec.wisc.edu/mcidas
009 *
010 * All Rights Reserved
011 *
012 * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
013 * some McIDAS-V source code is based on IDV and VisAD source code.
014 *
015 * McIDAS-V is free software; you can redistribute it and/or modify
016 * it under the terms of the GNU Lesser Public License as published by
017 * the Free Software Foundation; either version 3 of the License, or
018 * (at your option) any later version.
019 *
020 * McIDAS-V is distributed in the hope that it will be useful,
021 * but WITHOUT ANY WARRANTY; without even the implied warranty of
022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023 * GNU Lesser Public License for more details.
024 *
025 * You should have received a copy of the GNU Lesser Public License
026 * along with this program. If not, see http://www.gnu.org/licenses.
027 */
028
029 package edu.wisc.ssec.mcidasv.ui;
030
031 import java.awt.BorderLayout;
032 import java.awt.Insets;
033 import java.awt.event.ItemEvent;
034 import java.awt.event.ItemListener;
035 import java.util.ArrayList;
036 import java.util.Hashtable;
037 import java.util.List;
038
039 import javax.swing.BorderFactory;
040 import javax.swing.JCheckBox;
041 import javax.swing.JComponent;
042 import javax.swing.JPanel;
043
044 import ucar.unidata.idv.DisplayControl;
045 import ucar.unidata.idv.ui.SideLegend;
046 import ucar.unidata.idv.ui.SideLegend.CategoryPanel;
047 //import ucar.unidata.idv.ui.SideLegend.DisplayControlLegendPanel;
048 import ucar.unidata.util.GuiUtils;
049
050 public class McvSideLegend extends SideLegend {
051
052 // since you're gonna have to redo a significant portion of this, you might
053 // as well add in something to convey the ViewManager's active layer...
054 // may as well make it a tree, too.
055 // parent nodes don't get checks unless *all* kids are checked
056 // i like the UI from this link:
057 // http://rabbit-hole.blogspot.com/2006/11/tree-and-tree-table-with-checkboxes.html
058 // @Override protected void fillLegendSafely() {
059 // List controls = viewManager.getControlsForLegend();
060 // for (int i = 0; i < categoryPanels.size(); i++) {
061 // CategoryPanel categoryPanel =
062 // (CategoryPanel) categoryPanels.get(i);
063 // // categoryPanel.clear();
064 // categoryPanel.reInitialize();
065 // categoryPanel.getContents().setVisible(true);
066 // }
067 //
068 // Hashtable seen = new Hashtable();
069 // for (int i = controls.size() - 1; i >= 0; i--) {
070 // final DisplayControl control = (DisplayControl) controls.get(i);
071 // String category = control.getDisplayCategory();
072 // System.err.println("debug: category=" + category);
073 // if ((category == null) || (category.length() == 0)) {
074 // category = "Displays";
075 // }
076 // CategoryPanel categoryPanel =
077 // (CategoryPanel) categoryToPanel.get(category);
078 // if (categoryPanel == null) {
079 // categoryPanel = new CategoryPanel(this, category);
080 // categoryPanels.add(categoryPanel);
081 // categoryToPanel.put(category, categoryPanel);
082 // Boolean b = (Boolean) categoryToPanelOpen.get(category);
083 // if (b != null) {
084 // categoryPanel.setInnerVisible(b.booleanValue());
085 // }
086 // }
087 // seen.put(categoryPanel, categoryPanel);
088 // DisplayControlLegendPanel legendPanel =
089 // (DisplayControlLegendPanel) control.getTransientProperty(
090 // "SIDELEGEND");
091 // if (legendPanel == null) {
092 // JCheckBox visCbx = control.doMakeVisibilityControl("");
093 // ItemListener itemListener = new ItemListener() {
094 // public void itemStateChanged(ItemEvent event) {
095 // displayControlVisibilityChanged(control,
096 // event.getStateChange() == ItemEvent.SELECTED);
097 // }
098 // };
099 // visCbx.addItemListener(itemListener);
100 // visCbx.setBorder(BorderFactory.createEmptyBorder());
101 // JComponent sideLegendLabel =
102 // control.getLegendLabel(control.SIDE_LEGEND);
103 // sideLegendLabel.setBorder(BorderFactory.createEmptyBorder(0,
104 // 5, 0, 3));
105 // legendPanel = new DisplayControlLegendPanel(control,
106 // sideLegendLabel, false,
107 // GuiUtils.inset(visCbx, new Insets(0, 0, 0, 2)),
108 // control.getLegendButtons(control.SIDE_LEGEND));
109 //
110 // JComponent controlLegend =
111 // control.getLegendComponent(control.SIDE_LEGEND);
112 // legendPanel.add(controlLegend, false);
113 // control.putTransientProperty("SIDELEGEND", legendPanel);
114 // }
115 // categoryPanel.add(control, legendPanel.getContents());
116 // }
117 //
118 // List orderedCategoryPanels = new ArrayList();
119 // for (int i = 0; i < categoryPanels.size(); i++) {
120 // CategoryPanel categoryPanel =
121 // (CategoryPanel) categoryPanels.get(i);
122 // if (seen.get(categoryPanel) != null) {
123 // orderedCategoryPanels.add(categoryPanel.getContents());
124 // } else {
125 // categoryPanel.clear();
126 // }
127 // }
128 //
129 //
130 // JPanel panels = GuiUtils.vbox(orderedCategoryPanels);
131 // // synchronized (legendsPanel.getTreeLock()) {
132 // legendsPanel.removeAll();
133 // legendsPanel.add(panels, BorderLayout.NORTH);
134 // legendsPanel.invalidate();
135 // // }
136 // }
137
138
139 }