1
/*******************************************************************************
2
* Copyright (c) 2009 STMicroelectronics.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* Marzia Maugeri <marzia.maugeri@st.com> - initial API and implementation
10
*******************************************************************************/
11
package org.eclipse.linuxtools.dataviewers.dialogs;
13
import org.eclipse.jface.dialogs.Dialog;
14
import org.eclipse.jface.viewers.CheckStateChangedEvent;
15
import org.eclipse.jface.viewers.CheckboxTableViewer;
16
import org.eclipse.jface.viewers.ICheckStateListener;
17
import org.eclipse.jface.viewers.IStructuredContentProvider;
18
import org.eclipse.jface.viewers.LabelProvider;
19
import org.eclipse.jface.viewers.Viewer;
20
import org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer;
21
import org.eclipse.linuxtools.dataviewers.abstractviewers.STDataViewersHideShowManager;
22
import org.eclipse.linuxtools.dataviewers.abstractviewers.STDataViewersMessages;
23
import org.eclipse.swt.SWT;
24
import org.eclipse.swt.events.SelectionEvent;
25
import org.eclipse.swt.events.SelectionListener;
26
import org.eclipse.swt.layout.GridData;
27
import org.eclipse.swt.layout.GridLayout;
28
import org.eclipse.swt.widgets.Button;
29
import org.eclipse.swt.widgets.Composite;
30
import org.eclipse.swt.widgets.Control;
31
import org.eclipse.swt.widgets.Item;
32
import org.eclipse.swt.widgets.Label;
33
import org.eclipse.swt.widgets.Shell;
37
* This dialog allows the user to show/hide some columns of the viewer
38
* The status of shown/hidden columns is saved in the dialog settings of the view.
41
public class STDataViewersHideShowColumnsDialog extends Dialog {
43
private boolean dirty;
45
private STDataViewersHideShowManager manager;
47
private CheckboxTableViewer checkButtonsTable;
49
private Button selectAllButton;
51
private Button deselectAllButton;
53
private AbstractSTViewer stViewer;
60
public STDataViewersHideShowColumnsDialog(
61
AbstractSTViewer stViewer) {
62
super(stViewer.getViewer().getControl().getShell());
64
this.stViewer = stViewer;
65
this.manager = stViewer.getHideShowManager();
69
* Method declared on Window.
71
protected void configureShell(Shell newShell) {
72
super.configureShell(newShell);
73
newShell.setText(STDataViewersMessages.hideshowDialog_title);
77
* Method declared on Dialog.
79
protected Control createDialogArea(Composite parent) {
80
Composite composite = (Composite) super.createDialogArea(parent);
81
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1);
82
composite.setLayoutData(layoutData);
83
GridLayout layout = new GridLayout(2, true);
84
composite.setLayout(layout);
86
initializeDialogUnits(composite);
88
layoutData = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1);
89
checkButtonsTable = createCheckboxTable(composite, layoutData);
90
checkButtonsTable.setInput(stViewer.getColumns());
91
checkButtonsTable.addCheckStateListener(checkStateListener);
93
selectAllButton = new Button(composite, SWT.NONE);
94
selectAllButton.setText(STDataViewersMessages.selectAll_text);
95
selectAllButton.addSelectionListener(
96
new SelectionListener() {
97
public void widgetDefaultSelected(SelectionEvent e) {
100
public void widgetSelected(SelectionEvent e) {
102
checkButtonsTable.setAllChecked(true);
106
layoutData = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
107
selectAllButton.setLayoutData(layoutData);
109
deselectAllButton = new Button(composite, SWT.NONE);
110
deselectAllButton.setText(STDataViewersMessages.deselectAll_text);
111
deselectAllButton.addSelectionListener(
112
new SelectionListener() {
113
public void widgetDefaultSelected(SelectionEvent e) {
116
public void widgetSelected(SelectionEvent e) {
118
checkButtonsTable.setAllChecked(false);
122
layoutData = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
123
deselectAllButton.setLayoutData(layoutData);
125
createSeparatorLine(composite);
126
Dialog.applyDialogFont(composite);
128
setDefaultWidgetsValues();
133
private void setDefaultWidgetsValues() {
134
Item[] columns = stViewer.getColumns();
135
for (int i = columns.length; i-->0;) {
136
boolean state = (manager.getState(i) == STDataViewersHideShowManager.STATE_SHOWN);
137
checkButtonsTable.setChecked(columns[i], state);
141
private ICheckStateListener checkStateListener = new ICheckStateListener() {
142
public void checkStateChanged(CheckStateChangedEvent event) {
148
* Creates a separator line above the OK/Cancel buttons bar
151
* the parent composite
153
protected void createSeparatorLine(Composite parent) {
154
GridLayout parentLayout = (GridLayout)parent.getLayout();
156
// Build the separator line
157
Label separator = new Label(parent, SWT.HORIZONTAL | SWT.SEPARATOR);
158
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true, parentLayout.numColumns, 1);
159
separator.setLayoutData(layoutData);
162
private CheckboxTableViewer createCheckboxTable(Composite parent, GridData layoutData) {
163
CheckboxTableViewer tableViewer = CheckboxTableViewer.newCheckList(
170
tableViewer.getControl().setLayoutData(layoutData);
172
tableViewer.setContentProvider(new IStructuredContentProvider() {
173
public Object[] getElements(Object inputElement) {
174
if (inputElement instanceof Item[]) {
175
Item[] columns = (Item[])inputElement;
176
int[] order = stViewer.getColumnOrder();
177
Item[] elements = new Item[columns.length];
179
// sort the columns according to their actual display order
180
for (int i = columns.length; i-->0;) {
181
elements[i] = columns[order[i]];
186
return new Object[]{};
188
public void dispose() {}
189
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
192
tableViewer.setLabelProvider(new LabelProvider() {
193
public String getText(Object element) {
194
if (element instanceof Item) {
195
Item column = (Item)element;
197
if (manager.getWidth(stViewer.getColumnIndex(column)) == 0) {
198
return column.getText() + " (width = 0)";
200
return column.getText();
202
return element.toString();
216
protected void okPressed() {
218
saveManagerSettings();
223
private void saveManagerSettings() {
224
Item[] columns = stViewer.getColumns();
225
for (int i = columns.length; i-->0;) {
226
int state = checkButtonsTable.getChecked(columns[i])?
227
STDataViewersHideShowManager.STATE_SHOWN :
228
STDataViewersHideShowManager.STATE_HIDDEN;
229
manager.setState(i, state);
234
* @return the hideShowManager
236
public STDataViewersHideShowManager getManager() {
243
public boolean isDirty() {
248
* Sets the dirty flag to true.
250
public void markDirty() {
1
/*******************************************************************************
2
* Copyright (c) 2009 STMicroelectronics.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* Marzia Maugeri <marzia.maugeri@st.com> - initial API and implementation
10
*******************************************************************************/
11
package org.eclipse.linuxtools.dataviewers.dialogs;
13
import org.eclipse.jface.dialogs.Dialog;
14
import org.eclipse.jface.viewers.CheckStateChangedEvent;
15
import org.eclipse.jface.viewers.CheckboxTableViewer;
16
import org.eclipse.jface.viewers.ICheckStateListener;
17
import org.eclipse.jface.viewers.IStructuredContentProvider;
18
import org.eclipse.jface.viewers.LabelProvider;
19
import org.eclipse.jface.viewers.Viewer;
20
import org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTViewer;
21
import org.eclipse.linuxtools.dataviewers.abstractviewers.STDataViewersHideShowManager;
22
import org.eclipse.linuxtools.dataviewers.abstractviewers.STDataViewersMessages;
23
import org.eclipse.swt.SWT;
24
import org.eclipse.swt.events.SelectionEvent;
25
import org.eclipse.swt.events.SelectionListener;
26
import org.eclipse.swt.layout.GridData;
27
import org.eclipse.swt.layout.GridLayout;
28
import org.eclipse.swt.widgets.Button;
29
import org.eclipse.swt.widgets.Composite;
30
import org.eclipse.swt.widgets.Control;
31
import org.eclipse.swt.widgets.Item;
32
import org.eclipse.swt.widgets.Label;
33
import org.eclipse.swt.widgets.Shell;
36
* This dialog allows the user to show/hide some columns of the viewer The status of shown/hidden columns is saved in
37
* the dialog settings of the view.
40
public class STDataViewersHideShowColumnsDialog extends Dialog {
42
private boolean dirty;
44
private STDataViewersHideShowManager manager;
46
private CheckboxTableViewer checkButtonsTable;
48
private Button selectAllButton;
50
private Button deselectAllButton;
52
private AbstractSTViewer stViewer;
59
public STDataViewersHideShowColumnsDialog(AbstractSTViewer stViewer) {
60
super(stViewer.getViewer().getControl().getShell());
62
this.stViewer = stViewer;
63
this.manager = stViewer.getHideShowManager();
67
* (non-Javadoc) Method declared on Window.
70
protected void configureShell(Shell newShell) {
71
super.configureShell(newShell);
72
newShell.setText(STDataViewersMessages.hideshowDialog_title);
76
* (non-Javadoc) Method declared on Dialog.
79
protected Control createDialogArea(Composite parent) {
80
Composite composite = (Composite) super.createDialogArea(parent);
81
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1);
82
composite.setLayoutData(layoutData);
83
GridLayout layout = new GridLayout(2, true);
84
composite.setLayout(layout);
86
initializeDialogUnits(composite);
88
layoutData = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1);
89
checkButtonsTable = createCheckboxTable(composite, layoutData);
90
checkButtonsTable.setInput(stViewer.getColumns());
91
checkButtonsTable.addCheckStateListener(checkStateListener);
93
selectAllButton = new Button(composite, SWT.NONE);
94
selectAllButton.setText(STDataViewersMessages.selectAll_text);
95
selectAllButton.addSelectionListener(new SelectionListener() {
97
public void widgetDefaultSelected(SelectionEvent e) {
102
public void widgetSelected(SelectionEvent e) {
104
checkButtonsTable.setAllChecked(true);
107
layoutData = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
108
selectAllButton.setLayoutData(layoutData);
110
deselectAllButton = new Button(composite, SWT.NONE);
111
deselectAllButton.setText(STDataViewersMessages.deselectAll_text);
112
deselectAllButton.addSelectionListener(new SelectionListener() {
114
public void widgetDefaultSelected(SelectionEvent e) {
119
public void widgetSelected(SelectionEvent e) {
121
checkButtonsTable.setAllChecked(false);
124
layoutData = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
125
deselectAllButton.setLayoutData(layoutData);
127
createSeparatorLine(composite);
128
Dialog.applyDialogFont(composite);
130
setDefaultWidgetsValues();
135
private void setDefaultWidgetsValues() {
136
Item[] columns = stViewer.getColumns();
137
for (int i = columns.length; i-- > 0;) {
138
boolean state = (manager.getState(i) == STDataViewersHideShowManager.STATE_SHOWN);
139
checkButtonsTable.setChecked(columns[i], state);
143
private ICheckStateListener checkStateListener = new ICheckStateListener() {
145
public void checkStateChanged(CheckStateChangedEvent event) {
151
* Creates a separator line above the OK/Cancel buttons bar
154
* the parent composite
156
protected void createSeparatorLine(Composite parent) {
157
GridLayout parentLayout = (GridLayout) parent.getLayout();
159
// Build the separator line
160
Label separator = new Label(parent, SWT.HORIZONTAL | SWT.SEPARATOR);
161
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true, parentLayout.numColumns, 1);
162
separator.setLayoutData(layoutData);
165
private CheckboxTableViewer createCheckboxTable(Composite parent, GridData layoutData) {
166
CheckboxTableViewer tableViewer = CheckboxTableViewer.newCheckList(parent, SWT.SINGLE | SWT.HIDE_SELECTION
167
| SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
168
tableViewer.getControl().setLayoutData(layoutData);
170
tableViewer.setContentProvider(new IStructuredContentProvider() {
172
public Object[] getElements(Object inputElement) {
173
if (inputElement instanceof Item[]) {
174
Item[] columns = (Item[]) inputElement;
175
int[] order = stViewer.getColumnOrder();
176
Item[] elements = new Item[columns.length];
178
// sort the columns according to their actual display order
179
for (int i = columns.length; i-- > 0;) {
180
elements[i] = columns[order[i]];
185
return new Object[] {};
189
public void dispose() {
193
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
197
tableViewer.setLabelProvider(new LabelProvider() {
199
public String getText(Object element) {
200
if (element instanceof Item) {
201
Item column = (Item) element;
203
if (manager.getWidth(stViewer.getColumnIndex(column)) == 0) {
204
return column.getText() + " (width = 0)";
206
return column.getText();
208
return element.toString();
222
protected void okPressed() {
224
saveManagerSettings();
229
private void saveManagerSettings() {
230
Item[] columns = stViewer.getColumns();
231
for (int i = columns.length; i-- > 0;) {
232
int state = checkButtonsTable.getChecked(columns[i]) ? STDataViewersHideShowManager.STATE_SHOWN
233
: STDataViewersHideShowManager.STATE_HIDDEN;
234
manager.setState(i, state);
239
* @return the hideShowManager
241
public STDataViewersHideShowManager getManager() {
248
public boolean isDirty() {
253
* Sets the dirty flag to true.
255
public void markDirty() {