public void showAtts() { if (ds == null) return; if (attTable == null) { // global attributes attTable = new BeanTable(AttributeBean.class, (PreferencesExt) prefs.node("AttributeBeans"), false); PopupMenu varPopup = new ucar.nc2.ui.widget.PopupMenu(attTable.getJTable(), "Options"); varPopup.addAction( "Show Attribute", new AbstractAction() { public void actionPerformed(ActionEvent e) { AttributeBean bean = (AttributeBean) attTable.getSelectedBean(); if (bean != null) { infoTA.setText(bean.att.toString()); infoTA.gotoTop(); infoWindow.show(); } } }); attWindow = new IndependentWindow("Global Attributes", BAMutil.getImage("netcdfUI"), attTable); attWindow.setBounds( (Rectangle) prefs.getBean("AttWindowBounds", new Rectangle(300, 100, 500, 800))); } List<AttributeBean> attlist = new ArrayList<>(); for (Attribute att : ds.getGlobalAttributes()) { attlist.add(new AttributeBean(att)); } attTable.setBeans(attlist); attWindow.show(); }
// add a MapBean to the User Interface public void addMapBean(MapBean mb) { mapBeanMenu.addAction(mb.getActionDesc(), mb.getIcon(), mb.getAction()); // first one is the "default" if (mapBeanCount == 0) { setMapRenderer(mb.getRenderer()); } mapBeanCount++; mb.addPropertyChangeListener( new PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent e) { if (e.getPropertyName().equals("Renderer")) { setMapRenderer((Renderer) e.getNewValue()); } } }); }
public CoordSysTable(PreferencesExt prefs, JPanel buttPanel) { this.prefs = prefs; if (buttPanel != null) { AbstractAction attAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { showAtts(); } }; BAMutil.setActionProperties(attAction, "FontDecr", "global attributes", false, 'A', -1); BAMutil.addActionToContainer(buttPanel, attAction); } varTable = new BeanTable(VariableBean.class, (PreferencesExt) prefs.node("VariableBeans"), false); varTable.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { VariableBean vb = (VariableBean) varTable.getSelectedBean(); if (null != vb.firstCoordSys) setSelectedCoordinateSystem(vb.firstCoordSys); } }); csTable = new BeanTable( CoordinateSystemBean.class, (PreferencesExt) prefs.node("CoordinateSystemBean"), false); csTable.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { CoordinateSystemBean csb = (CoordinateSystemBean) csTable.getSelectedBean(); setSelectedCoordinateAxes(csb.coordSys); } }); axisTable = new BeanTable(AxisBean.class, (PreferencesExt) prefs.node("CoordinateAxisBean"), false); ucar.nc2.ui.widget.PopupMenu varPopup = new PopupMenu(varTable.getJTable(), "Options"); varPopup.addAction( "Show Declaration", new AbstractAction() { public void actionPerformed(ActionEvent e) { VariableBean vb = (VariableBean) varTable.getSelectedBean(); Variable v = ds.findVariable(vb.getName()); if (v == null) return; infoTA.clear(); infoTA.appendLine(v.toString()); infoTA.appendLine(showMissing(v)); infoTA.gotoTop(); infoWindow.show(); } }); varPopup.addAction( "Try as Grid", new AbstractAction() { public void actionPerformed(ActionEvent e) { VariableBean vb = (VariableBean) varTable.getSelectedBean(); VariableEnhanced v = (VariableEnhanced) ds.findVariable(vb.getName()); if (v == null) return; infoTA.clear(); infoTA.appendLine(tryGrid(v)); infoTA.gotoTop(); infoWindow.show(); } }); PopupMenu csPopup = new PopupMenu(csTable.getJTable(), "Options"); csPopup.addAction( "Show CoordSys", new AbstractAction() { public void actionPerformed(ActionEvent e) { CoordinateSystemBean csb = (CoordinateSystemBean) csTable.getSelectedBean(); CoordinateSystem coordSys = csb.coordSys; infoTA.clear(); infoTA.appendLine("Coordinate System = " + coordSys.getName()); for (CoordinateAxis axis : coordSys.getCoordinateAxes()) { infoTA.appendLine(" " + axis.getAxisType() + " " + axis.writeCDL(true, false)); } infoTA.appendLine(" Coordinate Transforms"); for (CoordinateTransform ct : coordSys.getCoordinateTransforms()) { infoTA.appendLine(" " + ct.getName() + " type=" + ct.getTransformType()); for (Parameter p : ct.getParameters()) { infoTA.appendLine(" " + p); } if (ct instanceof ProjectionCT) { ProjectionCT pct = (ProjectionCT) ct; if (pct.getProjection() != null) { infoTA.appendLine(" impl.class= " + pct.getProjection().getClass().getName()); // pct.getProjection(); } } if (ct instanceof VerticalCT) { VerticalCT vct = (VerticalCT) ct; infoTA.appendLine(" VerticalCT= " + vct); } } infoTA.gotoTop(); infoWindow.show(); } }); PopupMenu axisPopup = new PopupMenu(axisTable.getJTable(), "Options"); axisPopup.addAction( "Show Declaration", new AbstractAction() { public void actionPerformed(ActionEvent e) { AxisBean bean = (AxisBean) axisTable.getSelectedBean(); if (bean == null) return; VariableDS axis = (VariableDS) ds.findVariable(bean.getName()); if (axis == null) return; infoTA.clear(); infoTA.appendLine(axis.toString()); infoTA.appendLine(showMissing(axis)); infoTA.gotoTop(); infoWindow.show(); } }); axisPopup.addAction( "Show Values", new AbstractAction() { public void actionPerformed(ActionEvent e) { AxisBean bean = (AxisBean) axisTable.getSelectedBean(); if (bean == null) return; infoTA.clear(); showValues(bean.axis); infoTA.gotoTop(); infoWindow.show(); } }); axisPopup.addAction( "Show Value Differences", new AbstractAction() { public void actionPerformed(ActionEvent e) { AxisBean bean = (AxisBean) axisTable.getSelectedBean(); if (bean == null) return; infoTA.clear(); showValueDiffs(bean.axis); infoTA.gotoTop(); infoWindow.show(); } }); axisPopup.addAction( "Show Values as Date", new AbstractAction() { public void actionPerformed(ActionEvent e) { AxisBean bean = (AxisBean) axisTable.getSelectedBean(); if (bean == null) return; infoTA.clear(); showValuesAsDates(bean.axis); infoTA.gotoTop(); infoWindow.show(); } }); // the info window infoTA = new TextHistoryPane(); infoWindow = new IndependentWindow("Extra Information", BAMutil.getImage("netcdfUI"), infoTA); infoWindow.setBounds( (Rectangle) prefs.getBean("InfoWindowBounds", new Rectangle(300, 300, 500, 300))); split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, varTable, csTable); split.setDividerLocation(prefs.getInt("splitPos", 500)); split2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, split, axisTable); split2.setDividerLocation(prefs.getInt("splitPos2", 500)); setLayout(new BorderLayout()); add(split2, BorderLayout.CENTER); }
private void makeUI(int defaultHeight) { datasetNameLabel = new JLabel(); /* gridPP = new PrefPanel("GridView", (PreferencesExt) store.node("GridViewPrefs")); gridUrlIF = gridPP.addTextComboField("url", "Gridded Data URL", null, 10, false); gridPP.addButton( BAMutil.makeButtconFromAction( chooseLocalDatasetAction )); gridPP.finish(true, BorderLayout.EAST); gridPP.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { InvDatasetImpl ds = new InvDatasetImpl( gridUrlIF.getText(), thredds.catalog.DataType.GRID, ServiceType.NETCDF); setDataset( ds); } }); */ // top tool panel toolPanel = new JPanel(); toolPanel.setBorder(new EtchedBorder()); toolPanel.setLayout(new MFlowLayout(FlowLayout.LEFT, 0, 0)); // menus JMenu dataMenu = new JMenu("Dataset"); dataMenu.setMnemonic('D'); configMenu = new JMenu("Configure"); configMenu.setMnemonic('C'); JMenu toolMenu = new JMenu("Controls"); toolMenu.setMnemonic('T'); addActionsToMenus(dataMenu, configMenu, toolMenu); JMenuBar menuBar = new JMenuBar(); menuBar.add(dataMenu); menuBar.add(configMenu); menuBar.add(toolMenu); toolPanel.add(menuBar); // field choosers fieldPanel = new JPanel(); fieldPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); toolPanel.add(fieldPanel); // stride toolPanel.add(controller.strideSpinner); // buttcons BAMutil.addActionToContainer(toolPanel, controller.drawHorizAction); BAMutil.addActionToContainer(toolPanel, controller.drawVertAction); mapBeanMenu = MapBean.makeMapSelectButton(); toolPanel.add(mapBeanMenu.getParentComponent()); // the Navigated panel and its toolbars panz.setLayout(new FlowLayout()); navToolbar = panz.getNavToolBar(); moveToolbar = panz.getMoveToolBar(); if (((Boolean) navToolbarAction.getValue(BAMutil.STATE)).booleanValue()) toolPanel.add(navToolbar); if (((Boolean) moveToolbarAction.getValue(BAMutil.STATE)).booleanValue()) toolPanel.add(moveToolbar); BAMutil.addActionToContainer(toolPanel, panz.setReferenceAction); BAMutil.addActionToContainer(toolPanel, controller.dataProjectionAction); BAMutil.addActionToContainer(toolPanel, controller.showGridAction); BAMutil.addActionToContainer(toolPanel, controller.showContoursAction); BAMutil.addActionToContainer(toolPanel, controller.showContourLabelsAction); BAMutil.addActionToContainer(toolPanel, redrawAction); // vertical split vertPanel = new VertPanel(); splitDraw = new JSplitPane(JSplitPane.VERTICAL_SPLIT, panz, vertPanel); int divLoc = store.getInt("vertSplit", 2 * defaultHeight / 3); splitDraw.setDividerLocation(divLoc); drawingPanel = new JPanel(new BorderLayout()); // filled later // status panel JPanel statusPanel = new JPanel(new BorderLayout()); statusPanel.setBorder(new EtchedBorder()); positionLabel = new JLabel("position"); positionLabel.setToolTipText("position at cursor"); dataValueLabel = new JLabel("data value", SwingConstants.CENTER); dataValueLabel.setToolTipText("data value (double click on grid)"); statusPanel.add(positionLabel, BorderLayout.WEST); statusPanel.add(dataValueLabel, BorderLayout.CENTER); panz.setPositionLabel(positionLabel); // colorscale panel colorScalePanel = new ColorScale.Panel(this, controller.getColorScale()); csDataMinMax = new JComboBox(GridRenderer.MinMaxType.values()); csDataMinMax.setToolTipText("ColorScale Min/Max setting"); csDataMinMax.addActionListener( new AbstractAction() { public void actionPerformed(ActionEvent e) { controller.setDataMinMaxType((GridRenderer.MinMaxType) csDataMinMax.getSelectedItem()); } }); JPanel westPanel = new JPanel(new BorderLayout()); westPanel.add(colorScalePanel, BorderLayout.CENTER); westPanel.add(csDataMinMax, BorderLayout.NORTH); // lay it out JPanel northPanel = new JPanel(); // northPanel.setLayout( new BoxLayout(northPanel, BoxLayout.Y_AXIS)); northPanel.setLayout(new BorderLayout()); northPanel.add(datasetNameLabel, BorderLayout.NORTH); northPanel.add(toolPanel, BorderLayout.SOUTH); setLayout(new BorderLayout()); add(northPanel, BorderLayout.NORTH); add(statusPanel, BorderLayout.SOUTH); add(westPanel, BorderLayout.WEST); add(drawingPanel, BorderLayout.CENTER); setDrawHorizAndVert(controller.drawHorizOn, controller.drawVertOn); }
/** * Constructor. * * @param m TreeTableModelSorted m */ public JTreeTableSorted(TreeTableModelSorted m, boolean allowSortColChange) { this.model = m; this.useThreads = model.useThreads(); this.treeSort = model.isTreeSort(); // create the ui table = new JTreeTable(model); setLayout(new BorderLayout()); scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); // table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION); table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); // table.setFont( table.getFont().deriveFont( Font.BOLD)); // now set the header renderers TableColumnModel tcm = table.getColumnModel(); int ncolwt = useThreads ? table.getColumnCount() - 1 : table.getColumnCount(); for (int i = 0; i < ncolwt; i++) { TableColumn tc = tcm.getColumn(i); tc.setHeaderRenderer(new SortedHeaderRenderer(model.getColumnName(i), i)); } if (useThreads) { threadCol = ncolwt; threadHeaderRenderer = new ThreadHeaderRenderer(threadCol); tcm.getColumn(threadCol).setHeaderRenderer(threadHeaderRenderer); } // popupMenu popupMenu = new ucar.nc2.ui.widget.PopupMenu(table.getTableHeader(), "Visible"); int ncols = model.getColumnCount(); acts = new PopupAction[ncols]; for (int i = 0; i < ncols; i++) { acts[i] = new PopupAction(model.getColumnName(i)); popupMenu.addActionCheckBox(model.getColumnName(i), acts[i], true); } // listen for list selection table .getSelectionModel() .addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting() && lm.hasListeners() && (listSelectionEvent == null)) { listSelectionEvent = e; if (debugEvent) System.out.println(" JTreeTableSorted message selected = " + e); SwingUtilities.invokeLater( new Runnable() { // gotta do this after the dust settles public void run() { lm.sendEvent(listSelectionEvent); listSelectionEvent = null; // dont like this } }); // new Runnable } } }); // new ListSelectionListener // listen for mouse clicks on the column header allowSortColChangeMouseListener = new MyMouseAdapter() { public void click(MouseEvent e) { TableColumnModel tcm2 = table.getColumnModel(); int colIdx = tcm2.getColumnIndexAtX(e.getX()); int colNo = table.convertColumnIndexToModel(colIdx); // keep track of selection selectedRow = getSelectedRow(); if (debug) System.out.println("----selectedRow = " + selectedRow); if (colNo == threadCol) { // toggle threads threadHeaderRenderer.setOn(!threadHeaderRenderer.isOn); model.setThreadsOn(threadHeaderRenderer.isOn); model.sort(); } else { boolean reverse = model.sort(colNo); setSortCol(colNo, reverse); } table.fireDataChanged(); invokeSetPath(); } }; allowSortColChange(allowSortColChange); // event manager for ListSelection lm = new ListenerManager( "javax.swing.event.ListSelectionListener", "javax.swing.event.ListSelectionEvent", "valueChanged"); // default sort setSortCol(model.getSortCol(), model.getReverse()); }
NestedTable(int level) { this.level = level; myPrefs = (PreferencesExt) prefs.node("NestedTable" + level); table = new BeanTableSorted(VariableBean.class, myPrefs, false); JTable jtable = table.getJTable(); PopupMenu csPopup = new PopupMenu(jtable, "Options"); csPopup.addAction( "Show Declaration", new AbstractAction() { public void actionPerformed(ActionEvent e) { showDeclaration(table, false); } }); csPopup.addAction( "Show NcML", new AbstractAction() { public void actionPerformed(ActionEvent e) { showDeclaration(table, true); } }); csPopup.addAction( "NCdump Data", "Dump", new AbstractAction() { public void actionPerformed(ActionEvent e) { dumpData(table); } }); if (level == 0) { csPopup.addAction( "Data Table", new AbstractAction() { public void actionPerformed(ActionEvent e) { dataTable(table); } }); } // get selected variable, see if its a structure table.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { Variable v = getCurrentVariable(table); if ((v != null) && (v instanceof Structure)) { hideNestedTable(NestedTable.this.level + 2); setNestedTable(NestedTable.this.level + 1, (Structure) v); } else { hideNestedTable(NestedTable.this.level + 1); } if (eventsOK) datasetTree.setSelected(v); } }); // layout if (currentComponent == null) { currentComponent = table; tablePanel.add(currentComponent, BorderLayout.CENTER); isShowing = true; } else { split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, currentComponent, table); splitPos = myPrefs.getInt("splitPos" + level, 500); if (splitPos > 0) split.setDividerLocation(splitPos); show(); } }