static void setWebPageAuthor(String pageAuthor) { if (pageAuthor == null) pageAuthor = GT._("Jmol Web Page Maker"); pageAuthorName = pageAuthor; prop.setProperty("webMakerPageAuthorName", pageAuthorName); historyFile.addProperties(prop); }
static JPanel getMiniPanel() { JPanel miniPanel = new JPanel(); miniPanel.setLayout(new BorderLayout()); miniPanel.setBorder(BorderFactory.createTitledBorder(GT._("Messages (see Log tab for full history):"))); miniLogArea = new JTextArea(2,20); miniLogArea.setEditable(false); JScrollPane miniScrollPane = new JScrollPane(miniLogArea); miniPanel.add(miniScrollPane); return miniPanel; }
private static String copyBinaryFile(String fullPathName, String dataPath) { String name = fullPathName.substring(fullPathName.lastIndexOf('/') + 1); name = dataPath + "/" + name; String gzname = name + ".gz"; File outFile = new File(name); File gzoutFile = new File(gzname); if (outFile.exists()) return name; if (gzoutFile.exists()) return gzname; try { LogPanel.log(" ..." + GT._("copying\n{0}\n to",fullPathName)); byte[] data = getFileAsBytes(fullPathName); if (data == null) LogPanel.log(GT._("Could not find or open:\n{0}", fullPathName)); else { name = writeFileBytes(name, data); LogPanel.log(name); } } catch (Exception e) { LogPanel.log(e.getMessage()); } return name; }
public static WebExport createAndShowGUI(JmolViewer vwr, HistoryFile historyFile, String wName) { if (vwr == null) runStatus = STAND_ALONE; //Create and set up the window. if (webFrame != null) { webFrame.setVisible(true); webFrame.toFront(); return webExport; } webFrame = new JFrame(GT._("Jmol Web Page Maker")); //Set title bar icon String imageName = "org/openscience/jmol/app/images/icon.png"; URL imageUrl = vwr.getClass().getClassLoader().getResource(imageName); ImageIcon jmolIcon = new ImageIcon(imageUrl); webFrame.setIconImage(jmolIcon.getImage()); windowName = wName; historyFile.repositionWindow(windowName, webFrame, 700, 400, true); if (runStatus == STAND_ALONE) { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); webFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } else { webFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } //Create and set up the content pane. webExport = new WebExport(vwr, historyFile); webExport.setOpaque(true); //content panes must be opaque webFrame.setContentPane(webExport); webFrame.addWindowListener(webExport); //Display the window. webFrame.pack(); webFrame.setVisible(true); if (runStatus == STAND_ALONE) { //LogPanel.Log("Jmol_Web_Page_Maker is running as a standalone application"); } else { //LogPanel.Log("Jmol_Web_Page_Maker is running as a plug-in"); } return webExport; }
static JPanel getPanel() { //Now layout the LogPanel. It will be added to the tabs in the main class. //Create the log first, because the action listeners //need to refer to it. logArea = new JTextArea(30,20); logArea.setMargin(new Insets(5, 5, 5, 5)); logArea.setEditable(false); JScrollPane logScrollPane = new JScrollPane(logArea); //Create a panel of the log and its label JPanel logPanel = new JPanel(); logPanel.setLayout(new BorderLayout()); logPanel.setBorder(BorderFactory.createTitledBorder(GT._("Log and Error Messages:"))); logPanel.add(logScrollPane); return logPanel; }
protected WebPanel(JmolViewer viewer, JFileChooser fc, WebPanel[] webPanels, int panelIndex) { this.viewer = viewer; this.fc = fc; this.webPanels = webPanels; this.panelIndex = panelIndex; //Create the text fields for the path to the Jmol applet, page author(s) name(s) and web page title. remoteAppletPath = new JTextField(20); remoteAppletPath.addActionListener(this); remoteAppletPath.setText(WebExport.getAppletPath(true)); localAppletPath = new JTextField(20); localAppletPath.addActionListener(this); localAppletPath.setText(WebExport.getAppletPath(false)); pageAuthorName= new JTextField(20); pageAuthorName.addActionListener(this); pageAuthorName.setText(WebExport.getPageAuthorName()); webPageTitle = new JTextField(20); webPageTitle.addActionListener(this); webPageTitle.setText(GT._("A web page containing Jmol applets")); }
private static String writeFileBytes(String path, byte[] data) { try { if (data.length>=524288 && !path.endsWith("JmolApplet.jar") ){ //gzip it path += ".gz"; GZIPOutputStream gzFile = new GZIPOutputStream(new FileOutputStream(path)); gzFile.write(data); LogPanel.log(" ..." + GT._("compressing large data file to") + "\n"); gzFile.flush(); gzFile.close(); } else { FileOutputStream os = new FileOutputStream(path); os.write(data); os.flush(); os.close(); } } catch (IOException e) { LogPanel.log(e.getMessage()); } return path; }
private WebExport(JmolViewer vwr, HistoryFile hFile) { super(new BorderLayout()); historyFile = hFile; remoteAppletPath = historyFile.getProperty("webMakerAppletPath", ".."); localAppletPath = historyFile.getProperty("webMakerLocalAppletPath", ".."); pageAuthorName = historyFile.getProperty("webMakerPageAuthorName", GT._("Jmol Web Page Maker")); popInWidth=PT.parseInt(historyFile.getProperty("webMakerPopInWidth", "300")); popInHeight=PT.parseInt(historyFile.getProperty("webMakerPopInHeight", "300")); scriptButtonPercent = PT.parseInt(historyFile.getProperty( "webMakerScriptButtonPercent", "60")); //Define the tabbed pane JTabbedPane mainTabs = new JTabbedPane(); //Create file chooser JFileChooser fc = new JFileChooser(); webPanels = new WebPanel[2]; if (runStatus != STAND_ALONE) { //Add tabs to the tabbed pane JPanel introPanel = new JPanel(); String introFileName = "WebExportIntro"; URL url = GuiMap.getHtmlResource(this, introFileName); if (url == null) { System.err.println(GT.o(GT._("Couldn't find file: {0}"), introFileName+".html")); } JEditorPane intro = new JEditorPane(); if (url != null) { try { intro.setPage(url); } catch (IOException e) { System.err.println("Attempted to read a bad URL: " + url); } } intro.setEditable(false); JScrollPane introPane = new JScrollPane(intro); introPane.setMaximumSize(new Dimension(450, 350)); introPane.setPreferredSize(new Dimension(400, 300)); introPanel.setLayout(new BorderLayout()); introPanel.add(introPane); introPanel.setMaximumSize(new Dimension(450, 350)); introPanel.setPreferredSize(new Dimension(400, 300)); mainTabs.add(GT._("Introduction"), introPanel); webPanels[0] = new PopInJmol(vwr, fc, webPanels, 0); webPanels[1] = new ScriptButtons(vwr, fc, webPanels, 1); int w = Integer.parseInt(historyFile.getProperty("webMakerInfoWidth", "300")); int h = Integer.parseInt(historyFile.getProperty("webMakerInfoHeight", "350")); mainTabs.addTab(GT._("Pop-In Jmol"), webPanels[0].getPanel(w, h)); mainTabs.addTab(GT._("ScriptButton Jmol"), webPanels[1].getPanel(w, h)); // Uncomment to activate the test panel // Test TestCreator = new Test((Viewer)vwr); // JComponent Test = TestCreator.Panel(); // Maintabs.addTab("Tests",Test); } showMoleculesAndOrbitals = (runStatus == STAND_ALONE || JmolViewer .checkOption(vwr, "webMakerAllTabs")); if (showMoleculesAndOrbitals) { //mainTabs.addTab("Orbitals", (new Orbitals()).getPanel()); //mainTabs.addTab("Molecules", (new Molecules()).getPanel()); } //The LogPanel should always be the last one mainTabs.addTab(GT._("Log"), LogPanel.getPanel()); //Add the tabbed pane to this panel add(mainTabs); //Create the small log add(LogPanel.getMiniPanel(), BorderLayout.SOUTH); //Uncomment the following line to use scrolling tabs. //tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); }
static String TimeStamp_WebLink() { return " <small>" + GT.o(GT._("Page skeleton and JavaScript generated by export to web function using {0} on {1}."), new String[] {" <a href=\"http://jmol.sourceforge.net\">Jmol " + JmolViewer.getJmolVersion() + "</a> ", DateFormat.getDateInstance().format(new Date()) }) + "</small><br />"; //Specify medium verbosity on the date and time }
boolean fileWriter(File file, JList InstanceList) throws IOException { //returns true if successful. useAppletJS = JmolViewer.checkOption(viewer, "webMakerCreateJS"); // JOptionPane.showMessageDialog(null, "Creating directory for data..."); String datadirPath = file.getPath(); String datadirName = file.getName(); String fileName = null; if (datadirName.indexOf(".htm") > 0) { fileName = datadirName; datadirPath = file.getParent(); file = new File(datadirPath); datadirName = file.getName(); } else { fileName = datadirName + ".html"; } datadirPath = datadirPath.replace('\\', '/'); boolean made_datadir = (file.exists() && file.isDirectory() || file.mkdir()); DefaultListModel listModel = (DefaultListModel) InstanceList.getModel(); LogPanel.log(""); if (made_datadir) { LogPanel.log(GT._("Using directory {0}", datadirPath)); LogPanel.log(" " + GT._("adding JmolPopIn.js")); viewer.writeTextFile(datadirPath + "/JmolPopIn.js", WebExport.getResourceString(this, "JmolPopIn.js")); for (int i = 0; i < listModel.getSize(); i++) { JmolInstance thisInstance = (JmolInstance) (listModel.getElementAt(i)); String javaname = thisInstance.javaname; String script = thisInstance.script; LogPanel.log(" ...jmolApplet" + i); LogPanel.log(" ..." + GT._("adding {0}.png", javaname)); try { thisInstance.movepict(datadirPath); } catch (IOException IOe) { throw IOe; } String fileList = ""; fileList += addFileList(script, "/*file*/"); fileList += addFileList(script, "FILE0="); fileList += addFileList(script, "FILE1="); if (localAppletPath.getText().equals(".") || remoteAppletPath.getText().equals(".")) fileList += "Jmol.js\nJmolApplet.jar"; String[] filesToCopy = fileList.split("\n"); String[] copiedFileNames = new String[filesToCopy.length]; String f; int pt; for (int iFile = 0; iFile < filesToCopy.length; iFile++) { if ((pt = (f = filesToCopy[iFile]).indexOf("|")) >= 0) filesToCopy[iFile] = f.substring(0, pt); copiedFileNames[iFile] = copyBinaryFile(filesToCopy[iFile], datadirPath); } script = localizeFileReferences(script, filesToCopy, copiedFileNames); LogPanel.log(" ..." + GT._("adding {0}.spt", javaname)); viewer.writeTextFile(datadirPath + "/" + javaname + ".spt", script); } String html = WebExport.getResourceString(this, panelName + "_template"); html = fixHtml(html); appletInfoDivs = ""; StringBuffer appletDefs = new StringBuffer(); if (!useAppletJS) htmlAppletTemplate = WebExport.getResourceString(this, panelName + "_template2"); for (int i = 0; i < listModel.getSize(); i++) html = getAppletDefs(i, html, appletDefs, (JmolInstance) listModel .getElementAt(i)); html = TextFormat.simpleReplace(html, "@AUTHOR@", GT.escapeHTML(pageAuthorName .getText())); html = TextFormat.simpleReplace(html, "@TITLE@", GT.escapeHTML(webPageTitle.getText())); html = TextFormat.simpleReplace(html, "@REMOTEAPPLETPATH@", remoteAppletPath.getText()); html = TextFormat.simpleReplace(html, "@LOCALAPPLETPATH@", localAppletPath.getText()); html = TextFormat.simpleReplace(html, "@DATADIRNAME@", datadirName); if (appletInfoDivs.length() > 0) appletInfoDivs = "\n<div style='display:none'>\n" + appletInfoDivs + "\n</div>\n"; String str = appletDefs.toString(); if (useAppletJS) str = "<script type='text/javascript'>\n" + str + "\n</script>"; html = TextFormat.simpleReplace(html, "@APPLETINFO@", appletInfoDivs); html = TextFormat.simpleReplace(html, "@APPLETDEFS@", str); html = TextFormat.simpleReplace(html, "@CREATIONDATA@", GT.escapeHTML(WebExport .TimeStamp_WebLink())); html = TextFormat.simpleReplace(html, "@AUTHORDATA@", GT.escapeHTML(GT._("Based on template by A. Herráez as modified by J. Gutow"))); html = TextFormat.simpleReplace(html, "@LOGDATA@", "<pre>\n" + LogPanel.getText() + "\n</pre>\n"); LogPanel.log(" ..." + GT._("creating {0}", fileName)); viewer.writeTextFile(datadirPath + "/" + fileName, html); } else { IOException IOe = new IOException("Error creating directory: " + datadirPath); throw IOe; } LogPanel.log(""); return true; }
public void actionPerformed(ActionEvent e) { if (e.getSource() == remoteAppletPath) {//apparently no events are fired to reach this, maybe "enter" does it String path = remoteAppletPath.getText(); WebExport.setAppletPath(path, true); return; } if (e.getSource() == localAppletPath) {//apparently no events are fired to reach this, maybe "enter" does it String path = localAppletPath.getText(); WebExport.setAppletPath(path, false); return; } //Handle open button action. if (e.getSource() == addInstanceButton) { //make dialog to get name for instance //create an instance with this name. Each instance is just a container for a string with the Jmol state //which contains the full information on the file that is loaded and manipulations done. String label = (instanceList.getSelectedIndices().length != 1 ? "" : getInstanceName(-1)); String name = JOptionPane.showInputDialog( GT._("Give the occurrence of Jmol a name:"), label); if (name == null) return; //need to get the script... String script = viewer.getStateInfo(); if (script == null) { LogPanel.log("Error trying to get Jmol State within pop_in_Jmol."); } DefaultListModel listModel = (DefaultListModel) instanceList.getModel(); int width = 300; int height = 300; if (appletSizeSpinnerH != null) { width = ((SpinnerNumberModel) (appletSizeSpinnerW.getModel())) .getNumber().intValue(); height = ((SpinnerNumberModel) (appletSizeSpinnerH.getModel())) .getNumber().intValue(); } JmolInstance instance = new JmolInstance(viewer, name, script, width, height); if (instance == null) { LogPanel .log(GT._("Error creating new instance containing script(s) and image.")); } int i; for (i = instanceList.getModel().getSize(); --i >= 0;) if (getInstanceName(i).equals(instance.name)) break; if (i < 0) { i = listModel.getSize(); listModel.addElement(instance); LogPanel.log(GT._("added Instance {0}", instance.name)); } else { listModel.setElementAt(instance, i); LogPanel.log(GT._("updated Instance {0}", instance.name)); } instanceList.setSelectedIndex(i); syncLists(); return; } if (e.getSource() == deleteInstanceButton) { DefaultListModel listModel = (DefaultListModel) instanceList.getModel(); //find out which are selected and remove them. int[] todelete = instanceList.getSelectedIndices(); int nDeleted = 0; for (int i = 0; i < todelete.length; i++){ JmolInstance instance = (JmolInstance) listModel.get(todelete[i]); try { instance.delete(); } catch (IOException err) { LogPanel.log(err.getMessage()); } listModel.remove(todelete[i] - nDeleted++); } syncLists(); return; } if (e.getSource() == showInstanceButton) { DefaultListModel listModel = (DefaultListModel) instanceList.getModel(); //find out which are selected and remove them. int[] list = instanceList.getSelectedIndices(); if (list.length != 1) return; JmolInstance instance = (JmolInstance) listModel.get(list[0]); viewer.evalStringQuiet(")" + instance.script); //leading paren disabled history return; } if (e.getSource() == saveButton) { fc.setDialogTitle(GT._("Select a directory to create or an HTML file to save")); int returnVal = fc.showSaveDialog(this); if (returnVal != JFileChooser.APPROVE_OPTION) return; File file = fc.getSelectedFile(); boolean retVal = true; try { String path = remoteAppletPath.getText(); WebExport.setAppletPath(path, true); path = localAppletPath.getText(); WebExport.setAppletPath(path, false); String authorName = pageAuthorName.getText(); WebExport.setWebPageAuthor(authorName); retVal = fileWriter(file, instanceList); } catch (IOException IOe) { LogPanel.log(IOe.getMessage()); } if (!retVal) { LogPanel.log(GT._("Call to FileWriter unsuccessful.")); } } if (e.getSource() == helpButton){ HelpDialog webExportHelp = new HelpDialog(WebExport.getFrame(), WebExport.getHtmlResource(this, panelName + "_instructions")); webExportHelp.setVisible(true); webExportHelp.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } }
private JPanel getLeftPanel(int w, int h) { helpButton = new JButton(GT._("Help/Instructions")); helpButton.addActionListener(this); String templateImage = panelName + ".png"; URL pageCartoon = WebExport.getResource(this, templateImage); ImageIcon pageImage = null; if (pageCartoon != null) { pageImage = new ImageIcon(pageCartoon, GT._("Cartoon of Page")); } else { System.err.println("Error Loading Page Cartoon Image " + templateImage); } JLabel pageCartoonLabel = new JLabel(pageImage); JPanel pageCartoonPanel = new JPanel(); pageCartoonPanel.setLayout(new BorderLayout()); pageCartoonPanel.setBorder(BorderFactory.createTitledBorder(GT ._("Cartoon of Page")+":")); pageCartoonPanel.add(pageCartoonLabel); // editorScrollPane = getInstructionPane(w, h); //Create the save button. saveButton = new JButton(GT._("Save HTML as...")); saveButton.addActionListener(this); JPanel savePanel = new JPanel(); savePanel.add(saveButton); //Path to applet panel JPanel pathPanel = new JPanel(); pathPanel.setLayout(new BorderLayout()); pathPanel.setBorder(BorderFactory.createTitledBorder(GT ._("Relative server path to jar files:"))); pathPanel.add(remoteAppletPath, BorderLayout.NORTH); JPanel pathPanel2 = new JPanel(); pathPanel2.setLayout(new BorderLayout()); pathPanel2.setBorder(BorderFactory.createTitledBorder(GT ._("Relative local path to jar files:"))); pathPanel2.add(localAppletPath, BorderLayout.NORTH); //Page Author Panel JPanel authorPanel = new JPanel(); authorPanel.setBorder(BorderFactory.createTitledBorder(GT ._("Author (your name):"))); authorPanel.add(pageAuthorName, BorderLayout.NORTH); //Page Title Panel JPanel titlePanel = new JPanel(); titlePanel.setLayout(new BorderLayout()); titlePanel.setBorder(BorderFactory.createTitledBorder(GT ._("Browser window title for this web page:"))); titlePanel.add(webPageTitle, BorderLayout.NORTH); titlePanel.add(savePanel, BorderLayout.SOUTH); JPanel pathPanels = new JPanel(); pathPanels.setLayout(new BorderLayout()); pathPanels.add(pathPanel, BorderLayout.NORTH); pathPanels.add(pathPanel2, BorderLayout.SOUTH); JPanel settingsPanel = new JPanel(); settingsPanel.setLayout(new BorderLayout()); settingsPanel.add(pathPanels, BorderLayout.NORTH); settingsPanel.add(authorPanel, BorderLayout.CENTER); settingsPanel.add(titlePanel, BorderLayout.SOUTH); //Combine previous three panels into one JPanel leftpanel = new JPanel(); leftpanel.setLayout(new BorderLayout()); // leftpanel.add(editorScrollPane, BorderLayout.CENTER); leftpanel.add(helpButton, BorderLayout.NORTH); leftpanel.add(pageCartoonPanel, BorderLayout.CENTER); leftpanel.add(settingsPanel, BorderLayout.SOUTH); return leftpanel; }
JPanel getPanel(int infoWidth, int infoHeight) { //For layout purposes, put things in separate panels //Create the list and list view to handle the list of //Jmol Instances. instanceList = new JList(new DefaultListModel()); instanceList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); instanceList.setTransferHandler(new ArrayListTransferHandler(this)); instanceList.setCellRenderer(new InstanceCellRenderer()); instanceList.setDragEnabled(true); instanceList.setPreferredSize(new Dimension(350, 200)); JScrollPane instanceListView = new JScrollPane(instanceList); instanceListView.setPreferredSize(new Dimension(350, 200)); JPanel instanceSet = new JPanel(); instanceSet.setLayout(new BorderLayout()); instanceSet.add(new JLabel(listLabel), BorderLayout.NORTH); instanceSet.add(instanceListView, BorderLayout.CENTER); instanceSet.add(new JLabel(GT._("double-click and drag to reorder")), BorderLayout.SOUTH); //Create the Instance add button. addInstanceButton = new JButton(GT._("Add Present Jmol State as Instance...")); addInstanceButton.addActionListener(this); JPanel buttonPanel = new JPanel(); buttonPanel.setMaximumSize(new Dimension(350, 50)); showInstanceButton = new JButton(GT._("Show Selected")); showInstanceButton.addActionListener(this); deleteInstanceButton = new JButton(GT._("Delete Selected")); deleteInstanceButton.addActionListener(this); buttonPanel.add(showInstanceButton); buttonPanel.add(deleteInstanceButton); // width height or %width JPanel paramPanel = appletParamPanel(); paramPanel.setMaximumSize(new Dimension(350, 70)); //Instance selection JPanel instanceButtonPanel = new JPanel(); instanceButtonPanel.add(addInstanceButton); instanceButtonPanel.setSize(300, 70); JPanel p = new JPanel(); p.setLayout(new BorderLayout()); p.add(instanceButtonPanel, BorderLayout.NORTH); p.add(buttonPanel, BorderLayout.SOUTH); JPanel instancePanel = new JPanel(); instancePanel.setLayout(new BorderLayout()); instancePanel.add(instanceSet, BorderLayout.CENTER); instancePanel.add(p, BorderLayout.SOUTH); JPanel rightPanel = new JPanel(); rightPanel.setLayout(new BorderLayout()); rightPanel.setMinimumSize(new Dimension(350, 350)); rightPanel.setMaximumSize(new Dimension(350, 1000)); rightPanel.add(paramPanel, BorderLayout.NORTH); rightPanel.add(instancePanel, BorderLayout.CENTER); rightPanel.setBorder(BorderFactory.createTitledBorder(GT._("Jmol Instances:"))); //Create the overall panel JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); JPanel leftPanel = getLeftPanel(infoWidth, infoHeight); leftPanel.setMaximumSize(new Dimension(350, 1000)); //Add everything to this panel. panel.add(leftPanel, BorderLayout.CENTER); panel.add(rightPanel, BorderLayout.EAST); enableButtons(instanceList); return panel; }
AboutDialog(JFrame fr, JmolViewer vwr) { super(fr, GT._("About Jmol"), true); this.vwr = vwr; try { aboutURL = this.getClass().getClassLoader().getResource( JmolResourceHandler.getStringX("About.aboutURL")); if (aboutURL != null) { html = new JEditorPane(); html.setContentType("text/html"); html.setText(GuiMap.getResourceString(this, aboutURL.getPath())); } else { html = new JEditorPane("text/plain", GT.o(GT._( "Unable to find url \"{0}\"."), JmolResourceHandler .getStringX("About.aboutURL"))); } html.setEditable(false); html.addHyperlinkListener(this); } catch (MalformedURLException e) { Logger.warn("Malformed URL: " + e); } catch (IOException e) { Logger.warn("IOException: " + e); } scroller = new JScrollPane() { @Override public Dimension getPreferredSize() { return new Dimension(500, 400); } @Override public float getAlignmentX() { return LEFT_ALIGNMENT; } }; scroller.getViewport().add(html); JPanel htmlWrapper = new JPanel(new BorderLayout()); htmlWrapper.setAlignmentX(LEFT_ALIGNMENT); htmlWrapper.add(scroller, BorderLayout.CENTER); JPanel container = new JPanel(); container.setLayout(new BorderLayout()); container.add(htmlWrapper, BorderLayout.CENTER); /* thisURL = aboutURL; JPanel buttonPanel = new JPanel(); buttonPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); buttonPanel.setLayout(new BorderLayout()); // create browser "back" button backButton = new JButton(GT._("back")); backButton.setEnabled(false); backButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { back(); } }); // create return-to-start dialog button JButton returnUserGuide = new JButton(GT._("back to About")); returnUserGuide.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { backTo(aboutURL); } }); buttonPanel.add(returnUserGuide, BorderLayout.WEST); buttonPanel.add(backButton, BorderLayout.CENTER); getRootPane().setDefaultButton(returnUserGuide); JButton ok = new JButton(GT._("OK")); final AboutDialog aboutDialog = this; ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { aboutDialog.setVisible(false); } }); buttonPanel.add(ok, BorderLayout.EAST); getRootPane().setDefaultButton(ok); //container.add(buttonPanel, BorderLayout.SOUTH); */ getContentPane().add(container); pack(); Dimension screenSize = this.getToolkit().getScreenSize(); Dimension size = this.getSize(); screenSize.height = screenSize.height / 2; screenSize.width = screenSize.width / 2; size.height = size.height / 2; size.width = size.width / 2; int y = screenSize.height - size.height; int x = screenSize.width - size.width; this.setLocation(x, y); }