/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: PreferencePanel.java
*
* Copyright (c) 2004 Sun Microsystems and Static Free Software
*
* Electric(tm) is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Electric(tm) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Electric(tm); see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, Mass 02111-1307, USA.
*/
package com.sun.electric.tool.user.dialogs.options;
import com.sun.electric.database.EditingPreferences;
import com.sun.electric.database.hierarchy.Library;
import com.sun.electric.database.text.Pref;
import com.sun.electric.database.text.PrefPackage;
import com.sun.electric.database.text.Setting;
import com.sun.electric.technology.TechPool;
import com.sun.electric.technology.Technology;
import com.sun.electric.tool.user.dialogs.EDialog;
import com.sun.electric.tool.user.dialogs.PreferencesFrame;
import java.awt.Frame;
import java.util.Map;
import javax.swing.JPanel;
/**
* This class defines a superstructure for a panel in the Preferences dialog.
*/
public class PreferencePanel extends EDialog
{
private PreferencesFrame parent;
protected Technology curTech = Technology.getCurrent();
protected Library curLib = Library.getCurrent();
private boolean inited = false;
public PreferencePanel(Frame parent, boolean modal)
{
super(parent, modal);
}
public PreferencePanel(PreferencesFrame parent, boolean modal)
{
super((Frame)parent.getOwner(), modal);
this.parent = parent;
}
/** return the JPanel to use for the user preferences. */
public JPanel getUserPreferencesPanel() { return null; }
/** return the JPanel to use for the project preferences. */
public JPanel getProjectPreferencesPanel() { return null; }
/** return the name of this preferences tab. */
public String getName() { return ""; }
/** Method to tell whether this preferences tab has been initialized.
* @return true if this preferences tab has been initialized.
*/
public boolean isInited() { return inited; }
/**
* Method to mark that this preferences tab has been initialized.
*/
public void setInited() { inited = true; }
/**
* Method to return the current technology for use in all preferences tabs.
* @return the current technology.
*/
public Technology getTech() { return curTech; }
/**
* Method called at the start of the dialog.
* Caches current values and displays them in the Frame tab.
*/
public void init() {}
/**
* Method called when the "OK" panel is hit.
* Updates any changed fields in the Frame tab.
*/
public void term() {}
/**
* Method called when the factory reset is requested.
*/
public void reset() {}
/**
* Method called when the factory reset is requested for just one panel.
* @return true if the panel could be reset "in place" without redisplay.
*/
public boolean resetThis() { return false; }
/**
* Method to Save options from specified PrefPackage into Electric Preferences subtree.
* @param pp PrefPackage with option values
*/
protected void putPrefs(PrefPackage pp) { PrefPackage.lowLevelPutPrefs(pp, Pref.getPrefRoot(), true); }
protected TechPool getTechPool() { return TechPool.getThreadTechPool(); }
protected EditingPreferences getEditingPreferences() { return parent.getEditingPreferences(); }
protected void setEditingPreferences(EditingPreferences ep) { parent.setEditingPreferences(ep); }
/**
* Method to get the boolean value on the Setting object.
* The object must have been created as "boolean".
* @param setting setting object.
* @return the boolean value on the Setting object.
*/
public boolean getBoolean(Setting setting) { return ((Boolean)getValue(setting)).booleanValue(); }
/**
* Method to get the integer value on the Setting object.
* The object must have been created as "integer".
* @param setting setting object.
* @return the integer value on the Setting object.
*/
public int getInt(Setting setting) { return ((Integer)getValue(setting)).intValue(); }
/**
* Method to get the long value on the Setting object.
* The object must have been created as "long".
* @param setting setting object.
* @return the long value on the Setting object.
*/
protected long getLong(Setting setting) { return ((Long)getValue(setting)).longValue(); }
/**
* Method to get the double value on the Setting object.
* The object must have been created as "double".
* @param setting setting object.
* @return the double value on the Setting object.
*/
protected double getDouble(Setting setting) { return ((Double)getValue(setting)).doubleValue(); }
/**
* Method to get string representation of the double value on the Setting object.
* The object must have been created as "double".
* @param setting setting object.
* @return the string representation of the double value on the Setting object.
*/
protected String getFormattedDouble(Setting setting) { return Double.toString(getDouble(setting)); }
/**
* Method to get the string value on the Setting object.
* The object must have been created as "string".
* @param setting setting object
* @return the string value on the Setting object.
*/
public String getString(Setting setting) { return (String)getValue(setting); }
/**
* Method to set a new boolean value on Setting object.
* @param setting Setting object.
* @param v the new boolean value of Setting object.
*/
public void setBoolean(Setting setting, boolean v)
{
if (v != getBoolean(setting))
putValue(setting, Boolean.valueOf(v));
}
/**
* Method to set a new integer value on Setting object.
* @param setting Setting object.
* @param v the new integer value of Setting object.
*/
public void setInt(Setting setting, int v)
{
if (v != getInt(setting))
putValue(setting, Integer.valueOf(v));
}
/**
* Method to set a new long value on Setting object.
* @param setting Setting object.
* @param v the new long value of Setting object.
*/
protected void setLong(Setting setting, long v)
{
if (v != getLong(setting))
putValue(setting, Long.valueOf(v));
}
/**
* Method to set a new double value on Setting object.
* @param setting Setting object.
* @param v the new double value of Setting object.
*/
protected void setDouble(Setting setting, double v)
{
if (v != getDouble(setting))
putValue(setting, Double.valueOf(v));
}
/**
* Method to set a new string value on Setting object.
* @param setting Setting object.
* @param str the new string value of Setting object.
*/
public void setString(Setting setting, String str)
{
if (!str.equals(getString(setting)))
putValue(setting, str);
}
private Object getValue(Setting setting) { return getContext().get(setting); }
private void putValue(Setting setting, Object value) { getContext().put(setting, value); }
private Map<Setting,Object> getContext() { return parent.getContext(); }
}