/** * Make the IdvWindow. Add event handlers for adding new data sources and closing the window. * * @return The window to put the gui in */ public IdvWindow doMakeFrame() { if (frame == null) { JButton newBtn = new JButton("Add New Data Source"); newBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { idv.showChooser(); } }); JButton closeBtn = new JButton("Close"); closeBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { doClose(); } }); JComponent extra = getButtons(); JComponent buttons; if (extra != null) { buttons = GuiUtils.wrap( GuiUtils.hflow( Misc.newList( /*newBtn,*/ extra, closeBtn), 4, 4)); } else { buttons = GuiUtils.wrap( GuiUtils.hflow( Misc.newList( /*newBtn,*/ closeBtn), 4, 4)); } JPanel contents = GuiUtils.centerBottom(getContents(), buttons); frame = new IdvWindow(getName(), idv, false); frame.getContentPane().add(contents); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { doClose(); } }); frame.pack(); frame.show(); } return frame; }
/** Disable or enable the forward/back buttons. */ private void checkButtons() { fwdBtn.setEnabled(historyIdx < handlers.size() - 1); backBtn.setEnabled(historyIdx > 0); }
/** * Create and return the Gui contents. * * @return The gui contents. */ protected JComponent doMakeContents() { // dataSelector = new DataSelector(getIdv(), new Dimension(400, 200), // true); // Get the list of catalogs but remove the old catalog.xml entry urlListHandler = getPreferenceList(PREF_CATALOGLIST); final XmlChooser xmlChooser = this; ActionListener catListListener = new ActionListener() { public void actionPerformed(ActionEvent ae) { if (!okToDoUrlListEvents) { return; } xmlChooser.actionPerformed(ae); } }; urlBox = urlListHandler.createComboBox(GuiUtils.CMD_UPDATE, catListListener, true); GuiUtils.setPreferredWidth(urlBox, 200); // top panel JButton browseButton = new JButton("Select File..."); browseButton.setToolTipText("Choose a catalog from disk"); browseButton.setActionCommand(CMD_BROWSE); browseButton.addActionListener(this); GuiUtils.setHFill(); JPanel catListPanel = GuiUtils.doLayout(new Component[] {urlBox}, 1, GuiUtils.WT_Y, GuiUtils.WT_N); backBtn = GuiUtils.getImageButton(GuiUtils.getImageIcon("/auxdata/ui/icons/Left16.gif", getClass())); backBtn.setToolTipText("View previous selection"); GuiUtils.makeMouseOverBorder(backBtn); backBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { goBack(); } }); fwdBtn = GuiUtils.getImageButton(GuiUtils.getImageIcon("/auxdata/ui/icons/Right16.gif", getClass())); GuiUtils.makeMouseOverBorder(fwdBtn); fwdBtn.setToolTipText("View next selection"); fwdBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { goForward(); } }); checkButtons(); JComponent bottomButtons = getDefaultButtons(); handlerHolder = new JPanel(); handlerHolder.setLayout(new BorderLayout()); // JPanel tmp = new JPanel(); // tmp.setPreferredSize(new Dimension(200,500)); // handlerHolder.add(tmp, BorderLayout.CENTER); if (getIdv().getArgsManager().getInitCatalogs().size() > 0) { initialUrlPath = (String) getIdv().getArgsManager().getInitCatalogs().get(0); urlBox.setSelectedItem(initialUrlPath); } else { if ((initialUrlPath != null) && (initialUrlPath.length() > 0)) { makeUiFromPath(initialUrlPath); } else { makeBlankTree(); } } JPanel navButtons = GuiUtils.hbox(backBtn, fwdBtn); GuiUtils.tmpInsets = GRID_INSETS; JPanel catPanel = GuiUtils.doLayout( new Component[] {new JLabel("Catalogs:"), catListPanel, browseButton}, 3, GuiUtils.WT_NYN, GuiUtils.WT_N); JPanel topPanel = GuiUtils.leftCenter(navButtons, catPanel); myContents = GuiUtils.topCenterBottom(topPanel, handlerHolder, bottomButtons); // myContents = GuiUtils.topCenter(getStatusComponent(), myContents); return myContents; }
/** * 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; }