blob: 7959d704405f17d178c38bda6b56e4a16400b709 [file] [log] [blame]
itrimbled5ad6fb2006-10-30 19:06:33 +00001/*******************************************************************************
2 * Copyright (c) 2006 Sybase, Inc. and others.
3 *
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http:// www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Sybase, Inc. - initial API and implementation
11 *******************************************************************************/
12package org.eclipse.jst.pagedesigner.jsf.ui.attributegroup;
13
14import java.util.HashMap;
15
16import org.eclipse.core.runtime.IStatus;
17import org.eclipse.swt.layout.GridData;
18import org.eclipse.swt.layout.GridLayout;
19import org.eclipse.swt.widgets.Composite;
20import org.eclipse.swt.widgets.Control;
21import org.eclipse.ui.forms.widgets.FormToolkit;
22
cbateman6d3359f2006-11-28 20:23:25 +000023import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField;
24import org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup;
itrimbled5ad6fb2006-10-30 19:06:33 +000025
26/**
27 * @author mengbo
28 * @version 1.5
gkesslerc2f44ec2007-12-07 23:43:50 +000029 * @TODO - unused now?
itrimbled5ad6fb2006-10-30 19:06:33 +000030 */
31public class CommonDialogFieldGroup extends DialogFieldGroup
32{
33 private HashMap map = new HashMap();
34 private AttributeData[] attributeData = null;
35
36 /* (non-Javadoc)
cbateman6d3359f2006-11-28 20:23:25 +000037 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup#initialize()
itrimbled5ad6fb2006-10-30 19:06:33 +000038 */
39 public void initialize()
40 {
41 if (attributeData != null)
42 {
43 for (int i = 0; i < attributeData.length; i++)
44 {
45 DialogField filed = DialogFieldFactory.getDialogField(attributeData[i]);
46 filed.setDialogFieldChangeListener(getDefaultChangeListener());
47 map.put(attributeData[i], filed);
48 }
49 }
50 }
51
cbateman40bc4fd2007-04-14 00:17:21 +000052 /**
53 * prepare the dialog field data
54 */
itrimbled5ad6fb2006-10-30 19:06:33 +000055 public void prepareData()
56 {
57 if (attributeData != null)
58 {
59 for (int i = 0; i < attributeData.length; i++)
60 {
61 DialogField field = (DialogField) map.get(attributeData[i]);
gkessler4804f7d2007-12-12 16:43:30 +000062 DialogFieldFactory.prepareDialogFieldValue(field, attributeData[i]);
itrimbled5ad6fb2006-10-30 19:06:33 +000063 }
64 }
65 }
66
67 /* (non-Javadoc)
cbateman6d3359f2006-11-28 20:23:25 +000068 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup#refreshData()
itrimbled5ad6fb2006-10-30 19:06:33 +000069 */
70 public void refreshData()
71 {
72 if (attributeData != null)
73 {
74 for (int i = 0; i < attributeData.length; i++)
75 {
76 DialogField field = (DialogField) map.get(attributeData[i]);
gkessler4804f7d2007-12-12 16:43:30 +000077 DialogFieldFactory.setDialogFieldValue(field, attributeData[i].getValue());
itrimbled5ad6fb2006-10-30 19:06:33 +000078 }
79 }
80 }
81
82 /* (non-Javadoc)
cbateman6d3359f2006-11-28 20:23:25 +000083 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup#layoutDialogFields(org.eclipse.ui.forms.widgets.FormToolkit, org.eclipse.swt.widgets.Composite)
itrimbled5ad6fb2006-10-30 19:06:33 +000084 */
85 public void layoutDialogFields(FormToolkit toolkit, Composite parent)
86 {
87 GridData data = new GridData(GridData.FILL_BOTH);
88 parent.setLayoutData(data);
89
90 GridLayout gl = new GridLayout();
91 gl.numColumns = getMaxColumnNum();
92 parent.setLayout(gl);
93
94 if (attributeData != null)
95 {
96 for (int i = 0; i < attributeData.length; i++)
97 {
98 DialogField field = (DialogField) map.get(attributeData[i]);
99 Control[] controls = field.doFillIntoGrid(toolkit, parent, gl.numColumns);
100 if (controls.length > 1)
101 {
102 GridData gridData = (GridData) controls[1].getLayoutData();
103 if(field.getNumberOfControls() == gl.numColumns)
104 {
105 gridData.grabExcessHorizontalSpace = true;
106 }
107 gridData.horizontalAlignment = GridData.FILL;
108 }
109 field.setLabelText(DialogFieldFactory.getDialogFieldLabel(attributeData[i]));
110 }
111 }
112 }
113
114 private int getMaxColumnNum()
115 {
116 int cols = 0;
117 if (attributeData != null)
118 {
119 for (int i = 0; i < attributeData.length; i++)
120 {
121 DialogField field = (DialogField) map.get(attributeData[i]);
122 int fieldCols = field.getNumberOfControls();
123 if (fieldCols > cols)
124 {
125 cols = fieldCols;
126 }
127 }
128 }
129 return cols;
130 }
131
132 /* (non-Javadoc)
cbateman6d3359f2006-11-28 20:23:25 +0000133 * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldGroup#validateDialogFields()
itrimbled5ad6fb2006-10-30 19:06:33 +0000134 */
135 public IStatus[] validateDialogFields()
136 {
137 // TODO Now we let it be.
138 return null;
139 }
140
141 /**
142 * @return Returns the attributePairs.
143 */
144 public AttributeData[] getAttributeData()
145 {
146 return attributeData;
147 }
148
149 /**
150 * @param attributePairs The attributePairs to set.
151 */
152 public void setAttributeData(AttributeData[] attributePairs)
153 {
154 this.attributeData = attributePairs;
155 }
156}