/*
* Created on Dec 21, 2005
*
*/
package net.atlanticbb.tantlinger.ui.text.dialogs;
import java.awt.GridBagLayout;
import javax.swing.JCheckBox;
import java.awt.GridBagConstraints;
import javax.swing.JSpinner;
import javax.swing.JComboBox;
import javax.swing.SpinnerNumberModel;
import java.util.*;
/**
* Panel for editing the size of a table cell
*
* @author Bob Tantlinger
*
*/
public class SizeAttributesPanel extends HTMLAttributeEditorPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String MEASUREMENTS[] = {"percent", "pixels"}; //$NON-NLS-1$ //$NON-NLS-2$
private JCheckBox widthCB = null;
private JCheckBox heightCB = null;
private JSpinner widthField = null;
private JSpinner heightField = null;
private JComboBox wMeasurementCombo = null;
private JComboBox hMeasurementCombo = null;
public SizeAttributesPanel()
{
this(new Hashtable());
}
public SizeAttributesPanel(Hashtable attr)
{
super(attr);
initialize();
updateComponentsFromAttribs();
}
public void updateComponentsFromAttribs()
{
if(attribs.containsKey("width")) //$NON-NLS-1$
{
widthCB.setSelected(true);
String w = attribs.get("width").toString(); //$NON-NLS-1$
if(w.endsWith("%")) //$NON-NLS-1$
w = w.substring(0, w.length() - 1);
else
wMeasurementCombo.setSelectedIndex(1);
try
{
widthField.getModel().setValue(new Integer(w));
}
catch(Exception ex)
{
ex.printStackTrace();
}
wMeasurementCombo.setEnabled(true);
widthField.setEnabled(true);
}
else
{
widthCB.setSelected(false);
widthField.setEnabled(false);
wMeasurementCombo.setEnabled(false);
}
if(attribs.containsKey("height")) //$NON-NLS-1$
{
heightCB.setSelected(true);
String h = attribs.get("height").toString(); //$NON-NLS-1$
if(h.endsWith("%")) //$NON-NLS-1$
h = h.substring(0, h.length() - 1);
else
hMeasurementCombo.setSelectedIndex(1);
try
{
heightField.getModel().setValue(new Integer(h));
}
catch(Exception ex)
{
ex.printStackTrace();
}
hMeasurementCombo.setEnabled(true);
heightField.setEnabled(true);
}
else
{
heightCB.setSelected(false);
heightField.setEnabled(false);
hMeasurementCombo.setEnabled(false);
}
}
public void updateAttribsFromComponents()
{
if(widthCB.isSelected())
{
String w = widthField.getModel().getValue().toString();
if(wMeasurementCombo.getSelectedIndex() == 0)
w += "%"; //$NON-NLS-1$
attribs.put("width", w); //$NON-NLS-1$
}
else
attribs.remove("width"); //$NON-NLS-1$
if(heightCB.isSelected())
{
String h = heightField.getModel().getValue().toString();
if(hMeasurementCombo.getSelectedIndex() == 0)
h += "%"; //$NON-NLS-1$
attribs.put("height", h); //$NON-NLS-1$
}
else
attribs.remove("height"); //$NON-NLS-1$
}
public void setComponentStates(Hashtable attribs)
{
if(attribs.containsKey("width")) //$NON-NLS-1$
{
widthCB.setSelected(true);
String w = attribs.get("width").toString(); //$NON-NLS-1$
if(w.endsWith("%")) //$NON-NLS-1$
w = w.substring(0, w.length() - 1);
else
wMeasurementCombo.setSelectedIndex(1);
try
{
widthField.getModel().setValue(new Integer(w));
}
catch(Exception ex)
{
ex.printStackTrace();
}
wMeasurementCombo.setEnabled(true);
widthField.setEnabled(true);
}
else
{
widthCB.setSelected(false);
widthField.setEnabled(false);
wMeasurementCombo.setEnabled(false);
}
if(attribs.containsKey("height")) //$NON-NLS-1$
{
heightCB.setSelected(true);
String h = attribs.get("height").toString(); //$NON-NLS-1$
if(h.endsWith("%")) //$NON-NLS-1$
h = h.substring(0, h.length() - 1);
else
hMeasurementCombo.setSelectedIndex(1);
try
{
heightField.getModel().setValue(new Integer(h));
}
catch(Exception ex)
{
ex.printStackTrace();
}
hMeasurementCombo.setEnabled(true);
heightField.setEnabled(true);
}
else
{
heightCB.setSelected(false);
heightField.setEnabled(false);
hMeasurementCombo.setEnabled(false);
}
}
/**
* This method initializes this
*
* @return void
*/
private void initialize()
{
GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
gridBagConstraints5.fill = java.awt.GridBagConstraints.NONE;
gridBagConstraints5.gridy = 1;
gridBagConstraints5.weightx = 0.0;
gridBagConstraints5.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints5.ipadx = 0;
gridBagConstraints5.gridx = 2;
GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
gridBagConstraints4.fill = java.awt.GridBagConstraints.NONE;
gridBagConstraints4.gridy = 0;
gridBagConstraints4.weightx = 1.0;
gridBagConstraints4.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints4.insets = new java.awt.Insets(0,0,5,0);
gridBagConstraints4.gridx = 2;
GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
gridBagConstraints3.fill = java.awt.GridBagConstraints.NONE;
gridBagConstraints3.gridy = 1;
gridBagConstraints3.weightx = 0.0;
gridBagConstraints3.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints3.insets = new java.awt.Insets(0,0,0,5);
gridBagConstraints3.ipadx = 0;
gridBagConstraints3.gridx = 1;
GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
gridBagConstraints2.fill = java.awt.GridBagConstraints.NONE;
gridBagConstraints2.gridy = 0;
gridBagConstraints2.weightx = 0.0;
gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints2.insets = new java.awt.Insets(0,0,0,5);
gridBagConstraints2.ipadx = 0;
gridBagConstraints2.gridx = 1;
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints1.insets = new java.awt.Insets(0,0,0,5);
gridBagConstraints1.gridy = 1;
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0,0,5,5);
gridBagConstraints.gridy = 0;
this.setLayout(new GridBagLayout());
this.setSize(215, 95);
this.setPreferredSize(new java.awt.Dimension(215,95));
this.setMaximumSize(getPreferredSize());
this.setMinimumSize(getPreferredSize());
this.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createTitledBorder(null, i18n.str("size"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null), javax.swing.BorderFactory.createEmptyBorder(2,5,2,5))); //$NON-NLS-1$
this.add(getWidthCB(), gridBagConstraints);
this.add(getHeightCB(), gridBagConstraints1);
this.add(getWidthField(), gridBagConstraints2);
this.add(getHeightField(), gridBagConstraints3);
this.add(getWMeasurementCombo(), gridBagConstraints4);
this.add(getHMeasurementCombo(), gridBagConstraints5);
}
/**
* This method initializes widthCB
*
* @return javax.swing.JCheckBox
*/
private JCheckBox getWidthCB()
{
if(widthCB == null)
{
widthCB = new JCheckBox();
widthCB.setText(i18n.str("width")); //$NON-NLS-1$
widthCB.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(java.awt.event.ItemEvent e)
{
widthField.setEnabled(widthCB.isSelected());
wMeasurementCombo.setEnabled(widthCB.isSelected());
}
});
}
return widthCB;
}
/**
* This method initializes heightCB
*
* @return javax.swing.JCheckBox
*/
private JCheckBox getHeightCB()
{
if(heightCB == null)
{
heightCB = new JCheckBox();
heightCB.setText(i18n.str("height")); //$NON-NLS-1$
heightCB.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(java.awt.event.ItemEvent e)
{
heightField.setEnabled(heightCB.isSelected());
hMeasurementCombo.setEnabled(heightCB.isSelected());
}
});
}
return heightCB;
}
/**
* This method initializes widthField
*
* @return javax.swing.JSpinner
*/
private JSpinner getWidthField()
{
if(widthField == null)
{
widthField = new JSpinner(new SpinnerNumberModel(1, 1, 999, 1));
}
return widthField;
}
/**
* This method initializes heightField
*
* @return javax.swing.JSpinner
*/
private JSpinner getHeightField()
{
if(heightField == null)
{
heightField = new JSpinner(new SpinnerNumberModel(1, 1, 999, 1));
}
return heightField;
}
/**
* This method initializes wMeasurementCombo
*
* @return javax.swing.JComboBox
*/
private JComboBox getWMeasurementCombo()
{
if(wMeasurementCombo == null)
{
wMeasurementCombo = new JComboBox(MEASUREMENTS);
}
return wMeasurementCombo;
}
/**
* This method initializes hMeasurementCombo
*
* @return javax.swing.JComboBox
*/
private JComboBox getHMeasurementCombo()
{
if(hMeasurementCombo == null)
{
hMeasurementCombo = new JComboBox(MEASUREMENTS);
}
return hMeasurementCombo;
}
} // @jve:decl-index=0:visual-constraint="10,10"