You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by vh...@apache.org on 2001/05/10 00:44:02 UTC
cvs commit: xml-batik/sources/org/apache/batik/apps/svgbrowser PreferenceDialog.java XMLPreferenceManager.java
vhardy 01/05/09 15:44:02
Modified: sources/org/apache/batik/util/gui UserStyleDialog.java
sources/org/apache/batik/apps/svgbrowser
PreferenceDialog.java XMLPreferenceManager.java
Log:
Now uses PreferenceManager to persist preferences.
Revision Changes Path
1.4 +28 -1 xml-batik/sources/org/apache/batik/util/gui/UserStyleDialog.java
Index: UserStyleDialog.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/util/gui/UserStyleDialog.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- UserStyleDialog.java 2001/03/27 13:36:22 1.3
+++ UserStyleDialog.java 2001/05/09 22:43:52 1.4
@@ -48,7 +48,7 @@
* This class represents a dialog to select the user style sheet.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: UserStyleDialog.java,v 1.3 2001/03/27 13:36:22 hillion Exp $
+ * @version $Id: UserStyleDialog.java,v 1.4 2001/05/09 22:43:52 vhardy Exp $
*/
public class UserStyleDialog extends JDialog implements ActionMap {
@@ -283,6 +283,33 @@
fileLabel.setEnabled(false);
fileTextField.setEnabled(false);
browseButton.setEnabled(false);
+ }
+
+ /**
+ * Returns the chosen path or null.
+ */
+ public String getPath() {
+ if(fileCheckBox.isSelected()){
+ return fileTextField.getText();
+ }
+ else{
+ return null;
+ }
+ }
+
+ /**
+ * Sets the current dialog path.
+ */
+ public void setPath(String s) {
+ if(s == null){
+ fileTextField.setEnabled(false);
+ fileCheckBox.setSelected(false);
+ }
+ else{
+ fileTextField.setEnabled(true);
+ fileTextField.setText(s);
+ fileCheckBox.setSelected(true);
+ }
}
/**
1.2 +198 -12 xml-batik/sources/org/apache/batik/apps/svgbrowser/PreferenceDialog.java
Index: PreferenceDialog.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/PreferenceDialog.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PreferenceDialog.java 2001/05/04 00:55:15 1.1
+++ PreferenceDialog.java 2001/05/09 22:43:56 1.2
@@ -14,6 +14,12 @@
import java.awt.FlowLayout;
import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import java.util.Map;
+import java.util.Hashtable;
+
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
@@ -39,11 +45,25 @@
* Dialog that displays user preferences.
*
* @author <a href="mailto:vhardy@apache.org">Vincent Hardy</a>
- * @version $Id: PreferenceDialog.java,v 1.1 2001/05/04 00:55:15 vhardy Exp $
+ * @version $Id: PreferenceDialog.java,v 1.2 2001/05/09 22:43:56 vhardy Exp $
*/
public class PreferenceDialog extends JDialog
implements GridBagConstants {
+ /**
+ * The return value if 'OK' is chosen.
+ */
+ public final static int OK_OPTION = 0;
+
+ /**
+ * The return value if 'Cancel' is chosen.
+ */
+ public final static int CANCEL_OPTION = 1;
+
+ //////////////////////////////////////////////////////////////
+ // GUI Resources Keys
+ //////////////////////////////////////////////////////////////
+
public static final String LABEL_USER_OPTIONS
= "PreferenceDialog.label.user.options";
@@ -107,6 +127,35 @@
public static final String CONFIG_CANCEL_MNEMONIC
= "PreferenceDialog.config.cancel.mnemonic";
+ //////////////////////////////////////////////////////////////
+ // Following are the preference keys used in the
+ // PreferenceManager model.
+ //////////////////////////////////////////////////////////////
+
+ public static final String PREFERENCE_KEY_LANGUAGES
+ = "preference.key.languages";
+
+ public static final String PREFERENCE_KEY_USER_STYLESHEET
+ = "preference.key.user.stylesheet";
+
+ public static final String PREFERENCE_KEY_SHOW_RENDERING
+ = "preference.key.show.rendering";
+
+ public static final String PREFERENCE_KEY_AUTO_ADJUST_WINDOW
+ = "preference.key.auto.adjust.window";
+
+ public static final String PREFERENCE_KEY_ENABLE_DOUBLE_BUFFERING
+ = "preference.key.enable.double.buffering";
+
+ public static final String PREFERENCE_KEY_SHOW_DEBUG_TRACE
+ = "preference.key.show.debug.trace";
+
+ public static final String PREFERENCE_KEY_PROXY_HOST
+ = "preference.key.proxy.host";
+
+ public static final String PREFERENCE_KEY_PROXY_PORT
+ = "preference.key.proxy.port";
+
/**
* <tt>PreferenceManager</tt> used to store and retrieve
* preferences
@@ -119,16 +168,103 @@
protected ConfigurationPanelSelector configPanelSelector;
/**
+ * Allows selection of the user languages
+ */
+ protected LanguageDialog.Panel languagePanel;
+
+ /**
+ * Allows selection of a user stylesheet
+ */
+ protected UserStyleDialog.Panel userStylesheetPanel;
+
+ protected JCheckBox showRendering;
+
+ protected JCheckBox autoAdjustWindow;
+
+ protected JCheckBox showDebugTrace;
+
+ protected JCheckBox enableDoubleBuffering;
+
+ protected JTextField host, port;
+
+ /**
+ * Code indicating whether the dialog was OKayed
+ * or cancelled
+ */
+ protected int returnCode;
+
+ /**
* Default constructor
*/
- public PreferenceDialog(){
+ public PreferenceDialog(PreferenceManager model){
super((Frame)null, true);
+ if(model == null){
+ throw new IllegalArgumentException();
+ }
+
+ this.model = model;
buildGUI();
+ initializeGUI();
pack();
}
/**
+ * Initializes the GUI components with the values
+ * from the model.
+ */
+ protected void initializeGUI(){
+ //
+ // Initialize language. The set of languages is
+ // defined by a String.
+ //
+ String languages = model.getString(PREFERENCE_KEY_LANGUAGES);
+ languagePanel.setLanguages(languages);
+
+ //
+ // Initializes the User Stylesheet
+ //
+ String userStylesheetPath = model.getString(PREFERENCE_KEY_USER_STYLESHEET);
+ userStylesheetPanel.setPath(userStylesheetPath);
+
+ //
+ // Initializes the browser options
+ //
+ showRendering.setSelected(model.getBoolean(PREFERENCE_KEY_SHOW_RENDERING));
+ autoAdjustWindow.setSelected(model.getBoolean(PREFERENCE_KEY_AUTO_ADJUST_WINDOW));
+ enableDoubleBuffering.setSelected(model.getBoolean(PREFERENCE_KEY_ENABLE_DOUBLE_BUFFERING));
+ showDebugTrace.setSelected(model.getBoolean(PREFERENCE_KEY_SHOW_DEBUG_TRACE));
+
+ //
+ // Initialize the proxy options
+ //
+ host.setText(model.getString(PREFERENCE_KEY_PROXY_HOST));
+ port.setText(model.getString(PREFERENCE_KEY_PROXY_PORT));
+ }
+
+ /**
+ * Stores current setting in PreferenceManager model
+ */
+ protected void savePreferences(){
+ model.setString(PREFERENCE_KEY_LANGUAGES,
+ languagePanel.getLanguages());
+ model.setString(PREFERENCE_KEY_USER_STYLESHEET,
+ userStylesheetPanel.getPath());
+ model.setBoolean(PREFERENCE_KEY_SHOW_RENDERING,
+ showRendering.isSelected());
+ model.setBoolean(PREFERENCE_KEY_AUTO_ADJUST_WINDOW,
+ autoAdjustWindow.isSelected());
+ model.setBoolean(PREFERENCE_KEY_ENABLE_DOUBLE_BUFFERING,
+ enableDoubleBuffering.isSelected());
+ model.setBoolean(PREFERENCE_KEY_SHOW_DEBUG_TRACE,
+ showDebugTrace.isSelected());
+ model.setString(PREFERENCE_KEY_PROXY_HOST,
+ host.getText());
+ model.setString(PREFERENCE_KEY_PROXY_PORT,
+ port.getText());
+ }
+
+ /**
* Builds the UI for this dialog
*/
protected void buildGUI(){
@@ -158,6 +294,23 @@
p.add(okButton);
p.add(cancelButton);
+ okButton.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ setVisible(false);
+ returnCode = OK_OPTION;
+ savePreferences();
+ dispose();
+ }
+ });
+
+ cancelButton.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ setVisible(false);
+ returnCode = CANCEL_OPTION;
+ dispose();
+ }
+ });
+
return p;
}
@@ -219,11 +372,13 @@
}
protected Component buildUserLanguage(){
- return new LanguageDialog.Panel();
+ languagePanel = new LanguageDialog.Panel();
+ return languagePanel;
}
protected Component buildUserStyleSheet(){
- return new UserStyleDialog.Panel();
+ userStylesheetPanel = new UserStyleDialog.Panel();
+ return userStylesheetPanel;
}
protected Component buildUserFont(){
@@ -232,13 +387,13 @@
protected Component buildBehavior(){
JGridBagPanel p = new JGridBagPanel();
- JCheckBox showRendering
+ showRendering
= new JCheckBox(Resources.getString(LABEL_SHOW_RENDERING));
- JCheckBox autoAdjustWindow
+ autoAdjustWindow
= new JCheckBox(Resources.getString(LABEL_AUTO_ADJUST_WINDOW));
- JCheckBox enableDoubleBuffering
+ enableDoubleBuffering
= new JCheckBox(Resources.getString(LABEL_ENABLE_DOUBLE_BUFFERING));
- JCheckBox showDebugTrace
+ showDebugTrace
= new JCheckBox(Resources.getString(LABEL_SHOW_DEBUG_TRACE));
p.add(showRendering, 0, 0, 1, 1, WEST, HORIZONTAL, 1, 0);
@@ -257,9 +412,9 @@
protected Component buildNetwork(){
JGridBagPanel p = new JGridBagPanel();
- JTextField host = new JTextField(Resources.getInteger(CONFIG_HOST_TEXT_FIELD_LENGTH));
+ host = new JTextField(Resources.getInteger(CONFIG_HOST_TEXT_FIELD_LENGTH));
JLabel hostLabel = new JLabel(Resources.getString(LABEL_HOST));
- JTextField port = new JTextField(Resources.getInteger(CONFIG_PORT_TEXT_FIELD_LENGTH));
+ port = new JTextField(Resources.getInteger(CONFIG_PORT_TEXT_FIELD_LENGTH));
JLabel portLabel = new JLabel(Resources.getString(LABEL_PORT));
p.add(hostLabel, 0, 0, 1, 1, WEST, HORIZONTAL, 0, 0);
p.add(host, 0, 1, 1, 1, CENTER, HORIZONTAL, 0, 0);
@@ -280,9 +435,40 @@
return new JButton("Applications");
}
+ /**
+ * Shows the dialog
+ * @return OK_OPTION or CANCEL_OPTION
+ */
+ public int showDialog(){
+ pack();
+ show();
+ return returnCode;
+ }
+
public static void main(String[] args){
- PreferenceDialog dlg = new PreferenceDialog();
- dlg.show();
+ Map defaults = new Hashtable();
+ defaults.put(PREFERENCE_KEY_LANGUAGES, "fr");
+ defaults.put(PREFERENCE_KEY_SHOW_RENDERING, new Boolean(true));
+ defaults.put(PREFERENCE_KEY_AUTO_ADJUST_WINDOW, new Boolean(true));
+ defaults.put(PREFERENCE_KEY_ENABLE_DOUBLE_BUFFERING, new Boolean(true));
+ defaults.put(PREFERENCE_KEY_SHOW_DEBUG_TRACE, new Boolean(true));
+ defaults.put(PREFERENCE_KEY_PROXY_HOST, "webcache.eng.sun.com");
+ defaults.put(PREFERENCE_KEY_PROXY_PORT, "8080");
+
+ XMLPreferenceManager manager
+ = new XMLPreferenceManager(args[0], defaults);
+ PreferenceDialog dlg = new PreferenceDialog(manager);
+ int c = dlg.showDialog();
+ if(c == OK_OPTION){
+ try{
+ manager.save();
+ System.out.println("Done Saving options");
+ System.exit(0);
+ }catch(Exception e){
+ System.err.println("Could not save options");
+ e.printStackTrace();
+ }
+ }
}
}
1.2 +24 -1 xml-batik/sources/org/apache/batik/apps/svgbrowser/XMLPreferenceManager.java
Index: XMLPreferenceManager.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/XMLPreferenceManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XMLPreferenceManager.java 2001/05/04 15:59:21 1.1
+++ XMLPreferenceManager.java 2001/05/09 22:43:58 1.2
@@ -31,12 +31,14 @@
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import org.apache.batik.util.XMLResourceDescriptor;
+
/**
* An extension of {@link PreferenceManager} which store the preference
* in XML.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: XMLPreferenceManager.java,v 1.1 2001/05/04 15:59:21 hillion Exp $
+ * @version $Id: XMLPreferenceManager.java,v 1.2 2001/05/09 22:43:58 vhardy Exp $
*/
public class XMLPreferenceManager extends PreferenceManager {
@@ -44,6 +46,27 @@
* The XML parser
*/
protected String xmlParserClassName;
+
+ /**
+ * Creates a preference manager.
+ * @param prefFileName the name of the preference file.
+ */
+ public XMLPreferenceManager(String prefFileName){
+ this(prefFileName, null,
+ XMLResourceDescriptor.getXMLParserClassName());
+ }
+
+ /**
+ * Creates a preference manager.
+ * @param prefFileName the name of the preference file.
+ * @param defaults where to get defaults value if the value is
+ * not specified in the file.
+ */
+ public XMLPreferenceManager(String prefFileName,
+ Map defaults){
+ this(prefFileName, defaults,
+ XMLResourceDescriptor.getXMLParserClassName());
+ }
/**
* Creates a preference manager.
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org