Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 29fb79a36398a91537e77809a4131499749a4ddd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*****************************************************************************
 * Copyright (c) 2010 CEA LIST.
 *    
 * 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:
 *  Remi Schnekenburger (CEA LIST) remi.schnekenburger@cea.fr - Initial API and implementation
 *****************************************************************************/
package org.eclipse.papyrus.properties.runtime.view.content;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

import org.eclipse.swt.layout.GridLayout;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;


/**
 * State for {@link LayoutDescriptor}
 */
public class GridLayoutDescriptorState extends LayoutDescriptorState {

	/** change support for this bean */
	private PropertyChangeSupport changeSupport;

	/** number of columns in the layout */
	private int numColumns;

	/** indicates if the columns should have the same width */
	private boolean sameWidth;

	/**
	 * Creates a new LayoutDescriptorState.
	 * 
	 * @param layoutDescriptor
	 *        managed descriptor
	 * @param readOnly
	 *        the read only mode of the state
	 */
	public GridLayoutDescriptorState(GridLayoutDescriptor layoutDescriptor, boolean readOnly) {
		super(layoutDescriptor, readOnly);

		sameWidth = layoutDescriptor.isSameWidth();
		numColumns = layoutDescriptor.getNumColumns();

		// register change support
		changeSupport = new PropertyChangeSupport(this);
	}

	/**
	 * {@inheritDoc}
	 */
	public GridLayoutDescriptor getDescriptor() {
		return (GridLayoutDescriptor)super.getDescriptor();
	}

	/**
	 * {@inheritDoc}
	 */
	public String getEditionDialogId() {
		return "GridLayoutDescriptorStateDialog";
	}


	/**
	 * Adds a property change listener to this class
	 * 
	 * @param listener
	 *        the listener to add
	 */
	public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
		changeSupport.addPropertyChangeListener(listener);
	}

	/**
	 * Removes a property change listener from this class
	 * 
	 * @param listener
	 *        the listener to remove
	 */
	public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
		changeSupport.removePropertyChangeListener(listener);
	}

	/**
	 * Sets the number of columns
	 * 
	 * @param numColumns
	 *        the number of columns to set
	 */
	public void setNumColumns(int numColumns) {
		changeSupport.firePropertyChange("numColumns", this.numColumns, this.numColumns = numColumns);
	}

	/**
	 * Returns the number of columns
	 * 
	 * @return the number of columns
	 */
	public int getNumColumns() {
		return numColumns;
	}

	/**
	 * Sets if the columns should have the same width
	 * 
	 * @param sameWidth
	 *        <code>true</code> if columns should have the same width
	 */
	public void setSameWidth(boolean sameWidth) {
		changeSupport.firePropertyChange("sameWidth", this.sameWidth, this.sameWidth = sameWidth);
	}

	/**
	 * Returns if the columns should have the same width
	 * 
	 * @return <code>true</code> if columns should have the same width
	 */
	public boolean getSameWidth() {
		return sameWidth;
	}

	/**
	 * {@inheritDoc}
	 */
	public Node generateNode(Document document) {
		Element node = document.createElement("layout");
		node.setAttribute("kind", LayoutParser.GRID_KIND);
		node.setAttribute("numColumns", "" + getNumColumns());
		node.setAttribute("sameWidth", "" + getSameWidth());
		return node;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public String getText() {
		StringBuffer buffer = new StringBuffer();
		buffer.append("GridLayout (");
		buffer.append(getNumColumns());
		buffer.append(", ");
		buffer.append(getSameWidth());
		buffer.append(")");
		return buffer.toString();
	}

	/**
	 * {@inheritDoc}
	 */
	public GridLayout createLayout() {
		return new GridLayout(numColumns, sameWidth);
	}

}

Back to the top