/** * Edit row * * @param paramInfo param info * @param removeOnCancel Should remove param info if user presses cancel_ * @return ok */ public boolean editRow(ParamInfo paramInfo, boolean removeOnCancel) { List comps = new ArrayList(); ParamField nameFld = new ParamField(null, true); nameFld.setText(paramInfo.getName()); JPanel topPanel = GuiUtils.hbox(GuiUtils.lLabel("Parameter: "), nameFld); topPanel = GuiUtils.inset(topPanel, 5); comps.add(GuiUtils.inset(new JLabel("Defined"), new Insets(5, 0, 0, 0))); comps.add(GuiUtils.filler()); comps.add(GuiUtils.filler()); final JLabel ctPreviewLbl = new JLabel(""); final JLabel ctLbl = new JLabel(""); if (paramInfo.hasColorTableName()) { ctLbl.setText(paramInfo.getColorTableName()); ColorTable ct = getIdv().getColorTableManager().getColorTable(paramInfo.getColorTableName()); if (ct != null) { ctPreviewLbl.setIcon(ColorTableCanvas.getIcon(ct)); } else { ctPreviewLbl.setIcon(null); } } String cbxLabel = ""; final ArrayList menus = new ArrayList(); getIdv() .getColorTableManager() .makeColorTableMenu( new ObjectListener(null) { public void actionPerformed(ActionEvent ae, Object data) { ctLbl.setText(data.toString()); ColorTable ct = getIdv().getColorTableManager().getColorTable(ctLbl.getText()); if (ct != null) { ctPreviewLbl.setIcon(ColorTableCanvas.getIcon(ct)); } else { ctPreviewLbl.setIcon(null); } } }, menus); JCheckBox ctUseCbx = new JCheckBox(cbxLabel, paramInfo.hasColorTableName()); final JButton ctPopup = new JButton("Change"); ctPopup.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { GuiUtils.showPopupMenu(menus, ctPopup); } }); addEditComponents( comps, "Color Table:", ctUseCbx, GuiUtils.hbox(ctPopup, GuiUtils.vbox(ctLbl, ctPreviewLbl), 5)); JCheckBox rangeUseCbx = new JCheckBox(cbxLabel, paramInfo.hasRange()); JTextField minFld = new JTextField("" + paramInfo.getMin(), 4); JTextField maxFld = new JTextField("" + paramInfo.getMax(), 4); JPanel rangePanel = GuiUtils.hbox(minFld, maxFld, 5); addEditComponents(comps, "Range:", rangeUseCbx, rangePanel); JCheckBox unitUseCbx = new JCheckBox(cbxLabel, paramInfo.hasDisplayUnit()); String unitLabel = ""; Unit unit = null; if (paramInfo.hasDisplayUnit()) { unit = paramInfo.getDisplayUnit(); } JComboBox unitFld = getIdv().getDisplayConventions().makeUnitBox(unit, null); // JTextField unitFld = new JTextField(unitLabel, 15); addEditComponents(comps, "Unit:", unitUseCbx, unitFld); ContourInfo ci = paramInfo.getContourInfo(); JCheckBox contourUseCbx = new JCheckBox(cbxLabel, ci != null); if (ci == null) { ci = new ContourInfo(); } ContourInfoDialog contDialog = new ContourInfoDialog("Edit Contour Defaults", false, null, false); contDialog.setState(ci); addEditComponents(comps, "Contour:", contourUseCbx, contDialog.getContents()); GuiUtils.tmpInsets = new Insets(5, 5, 5, 5); JComponent contents = GuiUtils.doLayout(comps, 3, GuiUtils.WT_NNY, GuiUtils.WT_N); contents = GuiUtils.topCenter(topPanel, contents); contents = GuiUtils.inset(contents, 5); while (true) { if (!GuiUtils.showOkCancelDialog(null, "Parameter Defaults", contents, null)) { if (removeOnCancel) { myParamInfos.remove(paramInfo); tableChanged(); } return false; } String what = ""; try { if (contourUseCbx.isSelected()) { what = "setting contour defaults"; contDialog.doApply(); ci.set(contDialog.getInfo()); paramInfo.setContourInfo(ci); } else { paramInfo.clearContourInfo(); } if (unitUseCbx.isSelected()) { what = "setting display unit"; Object selected = unitFld.getSelectedItem(); String unitName = TwoFacedObject.getIdString(selected); if ((unitName == null) || unitName.trim().equals("")) { paramInfo.setDisplayUnit(null); } else { paramInfo.setDisplayUnit(ucar.visad.Util.parseUnit(unitName)); } } else { paramInfo.setDisplayUnit(null); } if (ctUseCbx.isSelected()) { paramInfo.setColorTableName(ctLbl.getText()); } else { paramInfo.clearColorTableName(); } if (rangeUseCbx.isSelected()) { what = "setting range"; paramInfo.setRange( new Range(Misc.parseNumber(minFld.getText()), Misc.parseNumber(maxFld.getText()))); } else { paramInfo.clearRange(); } paramInfo.setName(nameFld.getText().trim()); break; } catch (Exception exc) { errorMsg("An error occurred " + what + "\n " + exc.getMessage()); // exc.printStackTrace(); } } repaint(); saveData(); return true; }
/** _more_ */ protected void createChart() { if (madeChart) { return; } madeChart = true; final JCheckBox chartDiffCbx = new JCheckBox("Use Difference", chartDifference); chartDiffCbx.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { chartDifference = chartDiffCbx.isSelected(); updateChart(); } }); chartTimeBox = new JList(); chartTimeBox.setVisibleRowCount(3); chartTimeBox.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); chartTimeBox.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if (ignoreChartTimeChanges) { return; } updateChart(); } }); List<StormParam> params = getStormTrackParams(); Insets inset = new Insets(3, 7, 7, 0); List chartComps = new ArrayList(); List<Way> ways = Misc.sort(stormDisplayState.getTrackCollection().getWayList()); List wayComps = new ArrayList(); for (Way way : ways) { final Way theWay = way; if (way.isObservation() && !chartWays.contains(way)) { chartWays.add(way); } final JCheckBox cbx = new JCheckBox(way.toString(), chartWays.contains(theWay)); cbx.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { if (cbx.isSelected()) { addChartWay(theWay); } else { removeChartWay(theWay); } } }); if (!way.isObservation()) { wayComps.add(cbx); } else { wayComps.add(0, cbx); } } chartComps.add(new JLabel(stormDisplayState.getStormTrackControl().getWaysName() + ":")); JComponent chartWayComp = GuiUtils.vbox(wayComps); if (wayComps.size() > 6) { chartWayComp = makeScroller(chartWayComp, 100, 150); } chartComps.add(GuiUtils.inset(chartWayComp, inset)); chartComps.add(GuiUtils.lLabel((isHourly() ? "Forecast Hour:" : "Forecast Time:"))); JScrollPane sp = new JScrollPane(chartTimeBox); chartComps.add(GuiUtils.inset(sp, inset)); List paramComps = new ArrayList(); for (StormParam param : params) { // if (param.getIsChartParam() == false) { // continue; // } final StormParam theParam = param; boolean useChartParam = chartParams.contains(theParam); final JCheckBox cbx = new JCheckBox(param.toString(), useChartParam); cbx.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { if (cbx.isSelected()) { addChartParam(theParam); } else { removeChartParam(theParam); } } }); paramComps.add(cbx); } chartComps.add(new JLabel("Parameters:")); JComponent paramComp = GuiUtils.vbox(paramComps); if (paramComps.size() > 6) { paramComp = makeScroller(paramComp, 100, 150); } chartComps.add(GuiUtils.inset(paramComp, inset)); chartComps.add(chartDiffCbx); JButton removeBtn = GuiUtils.makeButton("Remove Chart", this, "removeChart"); chartComps.add(GuiUtils.filler(5, 10)); chartComps.add(removeBtn); // JComponent top = GuiUtils.left(GuiUtils.hbox( // GuiUtils.label("Forecast Time: ", // chartTimeBox), // chartDiffCbx)); // top = GuiUtils.inset(top,5); // chartTop.add(BorderLayout.NORTH, top); JComponent left = GuiUtils.doLayout(chartComps, 1, GuiUtils.WT_N, new double[] {0, 1, 0, 1, 0}); chartLeft.add(BorderLayout.CENTER, GuiUtils.inset(left, 5)); chartLeft.invalidate(); chartLeft.validate(); chartLeft.repaint(); }