1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.data.ui.template;
19
20 import org.eclipse.swt.SWT;
21 import org.eclipse.swt.graphics.Font;
22 import org.eclipse.swt.graphics.FontData;
23 import org.eclipse.swt.layout.GridData;
24 import org.eclipse.swt.layout.GridLayout;
25 import org.eclipse.swt.widgets.Composite;
26 import org.eclipse.swt.widgets.Label;
27
28 import pl.edu.agh.cast.data.util.Messages;
29 import pl.edu.agh.cast.model.ModelColumn;
30 import pl.edu.agh.cast.model.base.BasePlugin;
31
32
33
34
35
36
37
38 public class ModelInfo {
39 private static final int COLUMNS_COUNT = 3;
40
41 private String modelId;
42
43 private ModelColumn[] modelColumns;
44
45
46
47
48
49
50
51 public ModelInfo(String modelId) {
52 this.modelId = modelId;
53 }
54
55
56
57
58
59
60
61
62
63 public void fillModelInfoComposite(Composite modelInfoComposite, ModelColumn[] modelCols) {
64 this.modelColumns = modelCols;
65
66 GridLayout modelInfoLayout = new GridLayout(COLUMNS_COUNT, false);
67 modelInfoComposite.setLayout(modelInfoLayout);
68 modelInfoLayout.verticalSpacing = 1;
69
70 createAndAddCaptionsRow(modelInfoComposite);
71
72 for (ModelColumn modelColumn : modelColumns) {
73 addLabel(modelInfoComposite, modelColumn.getName());
74 addLabel(modelInfoComposite, translateDataType(modelColumn.getType()));
75 addLabel(modelInfoComposite, translateUseValue(modelColumn.isRequired()));
76 }
77 }
78
79 private void createAndAddCaptionsRow(Composite modelInfoComposite) {
80 GridData gd = new GridData();
81 gd.grabExcessHorizontalSpace = true;
82 gd.horizontalAlignment = SWT.FILL;
83
84 Label nameColumnName = addLabel(modelInfoComposite, Messages.ModelInfoColumn_Name);
85 Label typeColumnName = addLabel(modelInfoComposite, Messages.ModelInfoColumn_Type);
86 Label useColumnName = addLabel(modelInfoComposite, Messages.ModelInfoColumn_Use);
87
88 FontData fd = new FontData();
89 fd.setStyle(SWT.BOLD);
90 fd.setHeight(9);
91 Font font = new Font(modelInfoComposite.getDisplay(), fd);
92
93 nameColumnName.setLayoutData(gd);
94 typeColumnName.setLayoutData(gd);
95 useColumnName.setLayoutData(gd);
96
97 nameColumnName.setFont(font);
98 typeColumnName.setFont(font);
99 useColumnName.setFont(font);
100 }
101
102 private Label addLabel(Composite composite, String text) {
103 Label label = new Label(composite, SWT.NULL);
104 if (text != null) {
105 label.setText(text);
106 }
107 return label;
108 }
109
110
111
112
113
114
115 public int getRequiredColumnsCount() {
116 int requiredCount = 0;
117 for (ModelColumn column : modelColumns) {
118 if (column.isRequired()) {
119 requiredCount++;
120 }
121 }
122 return requiredCount;
123 }
124
125 private static String translateUseValue(boolean required) {
126 if (required) {
127 return Messages.ModelInfo_ColumnRequired;
128 } else {
129 return Messages.ModelInfo_ColumnOptional;
130 }
131 }
132
133
134
135
136
137
138
139
140 private static String translateDataType(String type) {
141 if (type == null || type.length() == 0) {
142 return "";
143 }
144
145 String result = type;
146 if (type.equals(BasePlugin.COLUMN_TYPE_DATE)) {
147 result = Messages.ModelInfo_TypeDate;
148 } else if (type.equals(BasePlugin.COLUMN_TYPE_LONG)) {
149 result = Messages.ModelInfo_TypeLong;
150 } else if (type.equals(BasePlugin.COLUMN_TYPE_STRING)) {
151 result = Messages.ModelInfo_TypeString;
152 } else if (type.equals(BasePlugin.COLUMN_TYPE_BOOLEAN)) {
153 result = Messages.ModelInfo_TypeBoolean;
154 } else if (type.equals(BasePlugin.COLUMN_TYPE_DOUBLE)) {
155 result = Messages.ModelInfo_TypeDouble;
156 }
157 return result;
158 }
159 }