/** * This method checks if the current server is valid. If it is valid then it checks if there is * authentication required * * @return true if the server exists and can be accessed */ protected boolean canAccessServer() { // Try reading the public.serv file to see if we need a username/proj JTextField projFld = null; JTextField userFld = null; JComponent contents = null; JLabel label = null; boolean firstTime = true; while (true) { int status = checkIfServerIsOk(); if (status == STATUS_OK) { break; } if (status == STATUS_ERROR) { setState(STATE_UNCONNECTED); return false; } if (projFld == null) { projFld = new JTextField("", 10); userFld = new JTextField("", 10); GuiUtils.tmpInsets = GuiUtils.INSETS_5; contents = GuiUtils.doLayout( new Component[] { GuiUtils.rLabel("User ID:"), userFld, GuiUtils.rLabel("Project #:"), projFld, }, 2, GuiUtils.WT_N, GuiUtils.WT_N); label = new JLabel(" "); contents = GuiUtils.topCenter(label, contents); contents = GuiUtils.inset(contents, 5); } String lbl = (firstTime ? "The server: " + getServer() + " requires a user ID & project number for access" : "Authentication for server: " + getServer() + " failed. Please try again"); label.setText(lbl); if (!GuiUtils.showOkCancelDialog(null, "ADDE Project/User name", contents, null)) { setState(STATE_UNCONNECTED); return false; } firstTime = false; String userName = userFld.getText().trim(); String project = projFld.getText().trim(); if ((userName.length() > 0) && (project.length() > 0)) { passwords.put(getServer(), new String[] {userName, project}); } } return true; }
/** * Set the working projection. * * @param proj projection to use */ private void setWorkingProjection(ProjectionImpl proj) { if (proj == null) { return; } if (debug) { System.out.println("ProjManager.setWorkingProjection " + proj); } current = (ProjectionImpl) proj.constructCopy(); if (debug) { System.out.println( "ProjManager.setWorkingProjection map area = " + current.getDefaultMapArea()); } if (current != null) { mapLabel.setText(current.getName()); } npViewControl.setProjectionImpl(current); }
/** * Create a new ProjectionManager. * * @param parent JFrame (application) or JApplet (applet) * @param projections list of initial projections * @param makeDialog true to make this a dialog * @param helpId help id if dialog * @param maps List of MapData */ public ProjectionManager( RootPaneContainer parent, List projections, boolean makeDialog, String helpId, List maps) { this.helpId = helpId; this.maps = maps; this.parent = parent; // manage NewProjectionListeners lm = new ListenerManager( "java.beans.PropertyChangeListener", "java.beans.PropertyChangeEvent", "propertyChange"); // here's where the map will be drawn: but cant be changed/edited npViewControl = new NPController(); if (maps == null) { maps = getDefaultMaps(); // we use the system default } for (int mapIdx = 0; mapIdx < maps.size(); mapIdx++) { MapData mapData = (MapData) maps.get(mapIdx); if (mapData.getVisible()) { npViewControl.addMap(mapData.getSource(), mapData.getColor()); } } mapViewPanel = npViewControl.getNavigatedPanel(); mapViewPanel.setPreferredSize(new Dimension(250, 250)); mapViewPanel.setToolTipText("Shows the default zoom of the current projection"); mapViewPanel.setChangeable(false); if ((projections == null) || (projections.size() == 0)) { projections = makeDefaultProjections(); } // the actual list is a JTable subclass projTable = new JTableProjection(this, projections); JComponent listContents = new JScrollPane(projTable); JComponent buttons = GuiUtils.hbox( GuiUtils.makeButton("Edit", this, "doEdit"), GuiUtils.makeButton("New", this, "doNew"), GuiUtils.makeButton("Export", this, "doExport"), GuiUtils.makeButton("Delete", this, "doDelete")); mapLabel = new JLabel(" "); JComponent leftPanel = GuiUtils.inset(GuiUtils.topCenter(mapLabel, mapViewPanel), 5); JComponent rightPanel = GuiUtils.topCenter(buttons, listContents); rightPanel = GuiUtils.inset(rightPanel, 5); contents = GuiUtils.inset(GuiUtils.hbox(leftPanel, rightPanel), 5); // default current and working projection if (null != (current = projTable.getSelected())) { setWorkingProjection(current); projTable.setCurrentProjection(current); mapLabel.setText(current.getName()); } /* listen for new working Projections from projTable */ projTable.addNewProjectionListener( new NewProjectionListener() { public void actionPerformed(NewProjectionEvent e) { if (e.getProjection() != null) { setWorkingProjection(e.getProjection()); } } }); eventsOK = true; // put it together in the viewDialog if (makeDialog) { Container buttPanel = GuiUtils.makeApplyOkHelpCancelButtons(this); contents = GuiUtils.centerBottom(contents, buttPanel); viewDialog = GuiUtils.createDialog(GuiUtils.getApplicationTitle() + "Projection Manager", false); viewDialog.getContentPane().add(contents); viewDialog.pack(); ucar.unidata.util.Msg.translateTree(viewDialog); viewDialog.setLocation(100, 100); } }