/* * ViewAppearance.java * * Created on 16 ���� 2006 �., 18:45 * */ package datechooser.view.appearance; import datechooser.view.BackRenderer; import java.awt.*; import java.beans.*; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; /** * View profile. Contains rendering options for each cell's type.<br> * ������� �������� ���� ������. �������� ��������� ��������� ��� ����� ������� ����. * @author Androsov Vadim * @since 1.0 */ public class ViewAppearance implements Cloneable, Serializable { transient private PropertyChangeSupport changeSupport; /** * ������� ������. * @since 1.0 */ private CellAppearance usual; /** * ��������� ������. * @since 1.0 */ private CellAppearance selected; /** * ������� ������. * @since 1.0 */ private CellAppearance now; /** * �������������� ������. (������������� ��������� ������) * @since 1.0 */ private CellAppearance scroll; /** * ������ ��������� (������� ���� ������). * @since 1.0 */ private CellAppearance caption; /** * ����������� ������. * @since 1.0 */ private CellAppearance disabled; private boolean editable; private boolean supportsTransparency; private BackRenderer renderer; private String name; /** * Default constructor, does not make ready to use object.<br> * ����������� �� ��������� �� ������� �������, �������� � �������������. * @since 1.0 */ public ViewAppearance() { setRenderer(null); setSupportsTransparency(false); changeSupport = new PropertyChangeSupport(this); } /** * Constructs editable calendar view.<br> * ������� ������� �������� ���� ���������. * �� ��������� editable = true; * @see ViewAppearance#ViewAppearance(String, CellAppearance, CellAppearance, * CellAppearance, CellAppearance, CellAppearance, CellAppearance, * BackRenderer, boolean, boolean) * @since 1.0 */ public ViewAppearance(String name, CellAppearance usual, CellAppearance selected, CellAppearance now, CellAppearance scroll, CellAppearance caption, CellAppearance disabled, BackRenderer renderer, boolean canBeTransparent) { this(name, usual, selected, now, scroll, caption, disabled, renderer, canBeTransparent, true); } /** * Constructs calendar view.<br> * ������� ������� �������� ���� ���������. * @param name View name.<br> * ��� �������. * @param usual Render parameters for <b>usual</b> cells.<br> * ��������� ����������� ������� �����. * @param selected Render parameters for <b>selected</b> cells.<br> * ��������� ����������� ��������� �����. * @param now Render parameters for <b>now</b> cells.<br> * ��������� ����������� ������� �����. * @param scroll Render parameters for <b>scroll</b> cells.<br> * ��������� ����������� �������������� ����� * (������������� ��������� ������). * @param caption Render parameters for <b>caption</b> cells.<br> * ��������� ����������� ����� ��������� (� ����� ������). * @param disabled Render parameters for <b>disabled</b> cells.<br> * ��������� ����������� ����������� �����. * @param renderer Cell renderer.<br> * ����������� �����. * @param canBeTransparent Does this view allow transparency.<br> * ��������� �� ������� ��������� ������������ �����. * @param editable Is view editable.<br> * ��������� �� ������� ���������� ��������������. * @since 1.0 */ public ViewAppearance(String name, CellAppearance usual, CellAppearance selected, CellAppearance now, CellAppearance scroll, CellAppearance caption, CellAppearance disabled, BackRenderer renderer, boolean canBeTransparent, boolean editable) { this(); this.name = name; this.usual = usual; this.selected = selected; this.now = now; this.scroll = scroll; this.renderer = renderer; scroll.setSelectable(false); this.caption = caption; caption.setSelectable(false); this.disabled = disabled; setEditable(editable); setSupportsTransparency(canBeTransparent); } /** * @since 1.0 */ public CellAppearance getUsual() { return usual; } private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException { ois.defaultReadObject(); changeSupport = new PropertyChangeSupport(this); } /** * @since 1.0 */ public void setUsual(CellAppearance usual) { CellAppearance oldValue = this.usual; this.usual = usual; changeSupport.firePropertyChange("usual", oldValue, usual); } /** * @since 1.0 */ public CellAppearance getSelected() { return selected; } /** * @since 1.0 */ public void setSelected(CellAppearance selected) { CellAppearance oldValue = this.selected; this.selected = selected; changeSupport.firePropertyChange("selected", oldValue, selected); } /** * @since 1.0 */ public CellAppearance getNow() { return now; } /** * @since 1.0 */ public void setNow(CellAppearance now) { CellAppearance oldValue = this.now; this.now = now; changeSupport.firePropertyChange("now", oldValue, now); } /** * @since 1.0 */ public CellAppearance getScroll() { return scroll; } /** * @since 1.0 */ public void setScroll(CellAppearance scroll) { CellAppearance oldValue = this.scroll; scroll.setSelectable(false); this.scroll = scroll; changeSupport.firePropertyChange("scroll", oldValue, scroll); } /** * Get view name.<br> * ���������� ��� �������. * @since 1.0 */ public String getName() { return name; } /** * Set view name.<br> * ������������� ��� �������. * @since 1.0 */ public void setName(String name) { this.name = name; } /** * @since 1.0 */ public CellAppearance getCaption() { return caption; } /** * @since 1.0 */ public void setCaption(CellAppearance caption) { CellAppearance oldValue = this.caption; caption.setSelectable(false); this.caption = caption; changeSupport.firePropertyChange("caption", oldValue, caption); } /** * @since 1.0 */ public CellAppearance getDisabled() { return disabled; } /** * @since 1.0 */ public void setDisabled(CellAppearance disabled) { CellAppearance oldValue = this.disabled; this.disabled = disabled; changeSupport.firePropertyChange("disabled", oldValue, disabled); } public Object clone() { ViewAppearance newInst = new ViewAppearance(getName(), (CellAppearance) getUsual().clone(), (CellAppearance) getSelected().clone(), (CellAppearance) getNow().clone(), (CellAppearance) getScroll().clone(), (CellAppearance) getCaption().clone(), (CellAppearance) getDisabled().clone(), getRenderer(), isSupportsTransparency(), isEditable()); PropertyChangeListener[] listeners = changeSupport.getPropertyChangeListeners(); for (PropertyChangeListener theListener : listeners) { newInst.addPropertyChangeListener(theListener); } return newInst; } public void addPropertyChangeListener(PropertyChangeListener listener) { changeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { changeSupport.removePropertyChangeListener(listener); } /** * Is view editable.<br> * �������� �� ������� �������������. * @since 1.0 */ public boolean isEditable() { return editable; } /** * Set view editability.<br> * ������������� ��������������� ������. * @since 1.0 */ public void setEditable(boolean editable) { this.editable = editable; } /** * Get cell renderer.<br> * ���������� ����������� �����. * @since 1.0 */ public BackRenderer getRenderer() { return renderer; } /** * Set cell renderer.<br> * ������������� ����������� �����. * @see CellRenderer * @since 1.0 */ public void setRenderer(BackRenderer renderer) { this.renderer = renderer; } /** * Does view support transparency.<br> * ������������ �� ������ ��������� ������������. * @since 1.0 */ public boolean isSupportsTransparency() { return supportsTransparency; } /** * Set transparency support.<br> * ������������� ��� ������� ��������� ������������. * @since 1.0 */ public void setSupportsTransparency(boolean supportsTransparency) { this.supportsTransparency = supportsTransparency; } }