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