1 package org.eclipse.e4.tools.emf.ui.internal.common.uistructure;
2 
3 import org.eclipse.e4.tools.emf.ui.internal.ResourceProvider;
4 import org.eclipse.e4.tools.services.IResourcePool;
5 import org.eclipse.jface.viewers.StyledCellLabelProvider;
6 import org.eclipse.jface.viewers.StyledString;
7 import org.eclipse.jface.viewers.ViewerCell;
8 import org.eclipse.swt.SWT;
9 import org.eclipse.swt.custom.CCombo;
10 import org.eclipse.swt.custom.CLabel;
11 import org.eclipse.swt.custom.CTabFolder;
12 import org.eclipse.swt.custom.CTabItem;
13 import org.eclipse.swt.custom.SashForm;
14 import org.eclipse.swt.widgets.Button;
15 import org.eclipse.swt.widgets.Combo;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.CoolBar;
18 import org.eclipse.swt.widgets.CoolItem;
19 import org.eclipse.swt.widgets.Group;
20 import org.eclipse.swt.widgets.Label;
21 import org.eclipse.swt.widgets.Menu;
22 import org.eclipse.swt.widgets.MenuItem;
23 import org.eclipse.swt.widgets.ProgressBar;
24 import org.eclipse.swt.widgets.Sash;
25 import org.eclipse.swt.widgets.Shell;
26 import org.eclipse.swt.widgets.TabFolder;
27 import org.eclipse.swt.widgets.TabItem;
28 import org.eclipse.swt.widgets.Table;
29 import org.eclipse.swt.widgets.Text;
30 import org.eclipse.swt.widgets.ToolBar;
31 import org.eclipse.swt.widgets.ToolItem;
32 import org.eclipse.swt.widgets.Tree;
33 
34 public class WidgetLabelProvider extends StyledCellLabelProvider {
35 	private IResourcePool resourcePool;
36 
WidgetLabelProvider(IResourcePool resourcePool)37 	public WidgetLabelProvider(IResourcePool resourcePool) {
38 		this.resourcePool = resourcePool;
39 	}
40 
41 	@Override
update(ViewerCell cell)42 	public void update(ViewerCell cell) {
43 		Object element = cell.getElement();
44 		if (element instanceof Menu) {
45 			Menu m = (Menu) element;
46 			if ((m.getStyle() & SWT.BAR) == SWT.BAR) {
47 				cell.setText("MenuBar"); //$NON-NLS-1$
48 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_menubar_obj));
49 			} else {
50 				cell.setText("Menu"); //$NON-NLS-1$
51 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_menu_obj));
52 			}
53 		} else if (element instanceof MenuItem) {
54 			MenuItem item = (MenuItem) element;
55 			if ((item.getStyle() & SWT.SEPARATOR) == SWT.SEPARATOR) {
56 				cell.setText("Separator"); //$NON-NLS-1$
57 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_menuseparator_obj));
58 			} else {
59 				StyledString s = new StyledString("MenuItem"); //$NON-NLS-1$
60 				s.append(" - " + ((MenuItem) element).getText(), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
61 				cell.setStyleRanges(s.getStyleRanges());
62 				cell.setText(s.getString());
63 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_menuitem_obj));
64 			}
65 
66 		} else if (element instanceof CLabel) {
67 			StyledString s = new StyledString("Label"); //$NON-NLS-1$
68 			s.append(" - " + ((CLabel) element).getText(), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
69 			cell.setStyleRanges(s.getStyleRanges());
70 			cell.setText(s.getString());
71 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_clabel_obj));
72 		} else if (element instanceof ToolBar) {
73 			cell.setText("Toolbar"); //$NON-NLS-1$
74 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolbar_obj));
75 		} else if (element instanceof ToolItem) {
76 			cell.setText("ToolItem"); //$NON-NLS-1$
77 			ToolItem item = (ToolItem) element;
78 			if ((item.getStyle() & SWT.PUSH) == SWT.PUSH) {
79 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitempush_obj));
80 			} else if ((item.getStyle() & SWT.DROP_DOWN) == SWT.DROP_DOWN) {
81 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemdrop_obj));
82 			} else if ((item.getStyle() & SWT.CHECK) == SWT.CHECK) {
83 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemcheck_obj));
84 			} else if ((item.getStyle() & SWT.RADIO) == SWT.RADIO) {
85 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemradio_obj));
86 			} else if ((item.getStyle() & SWT.SEPARATOR) == SWT.SEPARATOR) {
87 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemseparator_obj));
88 			}
89 		} else if (element instanceof CoolItem) {
90 			cell.setText("CoolItem"); //$NON-NLS-1$
91 			CoolItem item = (CoolItem) element;
92 			if ((item.getStyle() & SWT.PUSH) == SWT.PUSH) {
93 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitempush_obj));
94 			} else if ((item.getStyle() & SWT.DROP_DOWN) == SWT.DROP_DOWN) {
95 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemdrop_obj));
96 			} else if ((item.getStyle() & SWT.CHECK) == SWT.CHECK) {
97 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemcheck_obj));
98 			} else if ((item.getStyle() & SWT.RADIO) == SWT.RADIO) {
99 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemradio_obj));
100 			} else if ((item.getStyle() & SWT.SEPARATOR) == SWT.SEPARATOR) {
101 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_toolitemseparator_obj));
102 			}
103 		} else if (element instanceof CoolBar) {
104 			cell.setText("Coolbar"); //$NON-NLS-1$
105 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_coolbar_obj));
106 		} else if (element instanceof Shell) {
107 			StyledString s = new StyledString("Shell"); //$NON-NLS-1$
108 			s.append(" - " + ((Shell) element).getText(), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
109 			cell.setStyleRanges(s.getStyleRanges());
110 			cell.setText(s.getString());
111 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_shell_obj));
112 		} else if (element instanceof ProgressBar) {
113 			cell.setText("ProgressBar"); //$NON-NLS-1$
114 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_progressbar_obj));
115 		} else if (element instanceof Group) {
116 			StyledString s = new StyledString("Group"); //$NON-NLS-1$
117 			s.append(" - " + ((Group) element).getText(), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
118 			cell.setStyleRanges(s.getStyleRanges());
119 			cell.setText(s.getString());
120 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_group_obj));
121 		} else if (element instanceof TabFolder) {
122 			cell.setText("TabFolder"); //$NON-NLS-1$
123 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_tabfolder_obj));
124 		} else if (element instanceof CTabFolder) {
125 			cell.setText("CTabFolder"); //$NON-NLS-1$
126 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_ctabfolder_obj));
127 		} else if (element instanceof Combo) {
128 			cell.setText("Combo"); //$NON-NLS-1$
129 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_comboviewer_obj));
130 		} else if (element instanceof CCombo) {
131 			cell.setText("CCombo"); //$NON-NLS-1$
132 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_ccombo_obj));
133 		} else if (element instanceof Table) {
134 			cell.setText("Table"); //$NON-NLS-1$
135 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_table_obj));
136 		} else if (element instanceof Tree) {
137 			cell.setText("Tree"); //$NON-NLS-1$
138 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_tree_obj));
139 		} else if (element instanceof Text) {
140 			cell.setText("Text"); //$NON-NLS-1$
141 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_text_obj));
142 		} else if (element instanceof Sash) {
143 			cell.setText("Sash"); //$NON-NLS-1$
144 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_separator_obj));
145 		} else if (element instanceof SashForm) {
146 			cell.setText("Sash Form"); //$NON-NLS-1$
147 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_sashform_obj));
148 		} else if (element instanceof Label) {
149 			Label l = (Label) element;
150 			if ((l.getStyle() & SWT.SEPARATOR) == SWT.SEPARATOR) {
151 				cell.setText("Separator"); //$NON-NLS-1$
152 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_separator_obj));
153 			} else {
154 				StyledString s = new StyledString("Label"); //$NON-NLS-1$
155 				s.append(" - " + l.getText(), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
156 				cell.setStyleRanges(s.getStyleRanges());
157 				cell.setText(s.getString());
158 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_label_obj));
159 			}
160 
161 		} else if (element instanceof TabItem) {
162 			StyledString s = new StyledString("TabItem"); //$NON-NLS-1$
163 			s.append(" - " + ((TabItem) element).getText(), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
164 			cell.setStyleRanges(s.getStyleRanges());
165 			cell.setText(s.getString());
166 		} else if (element instanceof CTabItem) {
167 			StyledString s = new StyledString("CTabItem"); //$NON-NLS-1$
168 			s.append(" - " + ((CTabItem) element).getText(), StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
169 			cell.setStyleRanges(s.getStyleRanges());
170 			cell.setText(s.getString());
171 			// cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_clabel_obj));
172 		} else if (element instanceof Button) {
173 			Button b = (Button) element;
174 			if ((b.getStyle() & SWT.PUSH) == SWT.PUSH) {
175 				cell.setText("Button"); //$NON-NLS-1$
176 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_button_obj));
177 			} else if ((b.getStyle() & SWT.CHECK) == SWT.CHECK) {
178 				cell.setText("Checkbox"); //$NON-NLS-1$
179 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_checkbox_obj));
180 			} else if ((b.getStyle() & SWT.RADIO) == SWT.RADIO) {
181 				cell.setText("Radiobox"); //$NON-NLS-1$
182 				cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_radiobutton_obj));
183 			}
184 		} else if (element instanceof Composite) {
185 			cell.setText("Composite"); //$NON-NLS-1$
186 			cell.setImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Widgets_composite_obj));
187 		} else {
188 			cell.setText(element + ""); //$NON-NLS-1$
189 		}
190 		super.update(cell);
191 	}
192 }
193