/* $Id: SettingsTabEnvironment.java 17841 2010-01-12 19:17:52Z linus $ ***************************************************************************** * Copyright (c) 2009 Contributors - see below * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * tfmorris ***************************************************************************** * * Some portions of this file was previously release using the BSD License: */ // Copyright (c) 1996-2007 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation without fee, and without a written // agreement is hereby granted, provided that the above copyright notice // and this paragraph appear in all copies. This software program and // documentation are copyrighted by The Regents of the University of // California. The software program and documentation are supplied "AS // IS", without any accompanying services from The Regents. The Regents // does not warrant that the operation of the program will be // uninterrupted or error-free. The end-user understands that the program // was developed for research purposes and is advised not to rely // exclusively on the program for any reason. IN NO EVENT SHALL THE // UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, // SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, // ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF // THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE // PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF // CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, // UPDATES, ENHANCEMENTS, OR MODIFICATIONS. package org.argouml.ui; import java.awt.BorderLayout; import java.util.ArrayList; import java.util.Collection; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.argouml.application.api.Argo; import org.argouml.application.api.GUISettingsTabInterface; import org.argouml.configuration.Configuration; import org.argouml.i18n.Translator; import org.argouml.uml.ui.SaveGraphicsManager; import org.argouml.util.SuffixFilter; import org.tigris.swidgets.LabelledLayout; /** * Settings panel for handling ArgoUML environment related settings. * * @author Thierry Lach * @since 0.9.4 */ class SettingsTabEnvironment extends JPanel implements GUISettingsTabInterface { private JPanel topPanel; private JTextField fieldArgoExtDir; private JTextField fieldJavaHome; private JTextField fieldUserHome; private JTextField fieldUserDir; private JTextField fieldStartupDir; private JComboBox fieldGraphicsFormat; private JComboBox fieldGraphicsResolution; private Collection<GResolution> theResolutions; /** * The constructor. */ SettingsTabEnvironment() { super(); } private void buildPanel() { setLayout(new BorderLayout()); int labelGap = 10; int componentGap = 5; topPanel = new JPanel(new LabelledLayout(labelGap, componentGap)); JLabel label = new JLabel(Translator.localize("label.default.graphics-format")); fieldGraphicsFormat = new JComboBox(); label.setLabelFor(fieldGraphicsFormat); topPanel.add(label); topPanel.add(fieldGraphicsFormat); label = new JLabel( Translator.localize("label.default.graphics-resolution")); theResolutions = new ArrayList<GResolution>(); theResolutions.add(new GResolution(1, "combobox.item.resolution-1")); theResolutions.add(new GResolution(2, "combobox.item.resolution-2")); theResolutions.add(new GResolution(4, "combobox.item.resolution-4")); fieldGraphicsResolution = new JComboBox(); //filled in later label.setLabelFor(fieldGraphicsResolution); topPanel.add(label); topPanel.add(fieldGraphicsResolution); // This string is NOT to be translated! See issue 2381. label = new JLabel("${argo.ext.dir}"); JTextField j2 = new JTextField(); fieldArgoExtDir = j2; fieldArgoExtDir.setEnabled(false); label.setLabelFor(fieldArgoExtDir); topPanel.add(label); topPanel.add(fieldArgoExtDir); // This string is NOT to be translated! See issue 2381. label = new JLabel("${java.home}"); JTextField j3 = new JTextField(); fieldJavaHome = j3; fieldJavaHome.setEnabled(false); label.setLabelFor(fieldJavaHome); topPanel.add(label); topPanel.add(fieldJavaHome); // This string is NOT to be translated! See issue 2381. label = new JLabel("${user.home}"); JTextField j4 = new JTextField(); fieldUserHome = j4; fieldUserHome.setEnabled(false); label.setLabelFor(fieldUserHome); topPanel.add(label); topPanel.add(fieldUserHome); // This string is NOT to be translated! See issue 2381. label = new JLabel("${user.dir}"); JTextField j5 = new JTextField(); fieldUserDir = j5; fieldUserDir.setEnabled(false); label.setLabelFor(fieldUserDir); topPanel.add(label); topPanel.add(fieldUserDir); label = new JLabel(Translator.localize("label.startup-directory")); JTextField j6 = new JTextField(); fieldStartupDir = j6; fieldStartupDir.setEnabled(false); label.setLabelFor(fieldStartupDir); topPanel.add(label); topPanel.add(fieldStartupDir); topPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); add(topPanel, BorderLayout.NORTH); JPanel bottom = new JPanel(); bottom.add(new JLabel( Translator.localize("label.graphics-export-resolution.warning"))); add(bottom, BorderLayout.SOUTH); } /* * @see GUISettingsTabInterface#handleSettingsTabRefresh() */ public void handleSettingsTabRefresh() { fieldArgoExtDir.setText(System.getProperty("argo.ext.dir")); fieldJavaHome.setText(System.getProperty("java.home")); fieldUserHome.setText(System.getProperty("user.home")); fieldUserDir.setText(Configuration.getString(Argo.KEY_STARTUP_DIR, System.getProperty("user.dir"))); fieldStartupDir.setText(Argo.getDirectory()); fieldGraphicsFormat.removeAllItems(); Collection c = SaveGraphicsManager.getInstance().getSettingsList(); fieldGraphicsFormat.setModel(new DefaultComboBoxModel(c.toArray())); fieldGraphicsResolution.removeAllItems(); fieldGraphicsResolution.setModel(new DefaultComboBoxModel( theResolutions.toArray())); int defaultResolution = Configuration.getInteger( SaveGraphicsManager.KEY_GRAPHICS_RESOLUTION, 1); for (GResolution gr : theResolutions) { if (defaultResolution == gr.getResolution()) { fieldGraphicsResolution.setSelectedItem(gr); break; } } } /* * @see GUISettingsTabInterface#handleSettingsTabSave() */ public void handleSettingsTabSave() { Configuration.setString(Argo.KEY_STARTUP_DIR, fieldUserDir.getText()); GResolution r = (GResolution) fieldGraphicsResolution.getSelectedItem(); Configuration.setInteger(SaveGraphicsManager.KEY_GRAPHICS_RESOLUTION, r.getResolution()); SaveGraphicsManager.getInstance().setDefaultFilter( (SuffixFilter) fieldGraphicsFormat.getSelectedItem()); } /* * @see GUISettingsTabInterface#handleSettingsTabCancel() */ public void handleSettingsTabCancel() { handleSettingsTabRefresh(); } /* * @see org.argouml.ui.GUISettingsTabInterface#handleResetToDefault() */ public void handleResetToDefault() { // Do nothing - these buttons are not shown. } /* * @see GUISettingsTabInterface#getTabKey() */ public String getTabKey() { return "tab.environment"; } /* * @see GUISettingsTabInterface#getTabPanel() */ public JPanel getTabPanel() { if (topPanel == null) { buildPanel(); } return this; } /** * The UID. */ private static final long serialVersionUID = 543442930918741133L; } class GResolution { private int resolution; private String label; /** * Constructor. * * @param r * @param name */ GResolution(int r, String name) { resolution = r; label = Translator.localize(name); } int getResolution() { return resolution; } /* * @see java.lang.Object#toString() */ public String toString() { return label; } }