]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/dialogs/SortMembersMessageDialog.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-before / ui / org / eclipse / jdt / internal / ui / dialogs / SortMembersMessageDialog.java
1 /*******************************************************************************
2  * Copyright (c) 2005, 2012 IBM Corporation and others.
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
7  *
8  * Contributors:
9  *     IBM Corporation - initial API and implementation
10  *******************************************************************************/
11 package org.eclipse.jdt.internal.ui.dialogs;
12
13 import org.eclipse.swt.SWT;
14 import org.eclipse.swt.events.SelectionAdapter;
15 import org.eclipse.swt.events.SelectionEvent;
16 import org.eclipse.swt.graphics.Image;
17 import org.eclipse.swt.layout.GridData;
18 import org.eclipse.swt.layout.GridLayout;
19 import org.eclipse.swt.widgets.Composite;
20 import org.eclipse.swt.widgets.Control;
21 import org.eclipse.swt.widgets.Label;
22 import org.eclipse.swt.widgets.Link;
23 import org.eclipse.swt.widgets.Shell;
24
25 import org.eclipse.jface.dialogs.Dialog;
26 import org.eclipse.jface.dialogs.IDialogConstants;
27 import org.eclipse.jface.dialogs.IDialogSettings;
28 import org.eclipse.jface.window.Window;
29
30 import org.eclipse.ui.PlatformUI;
31 import org.eclipse.ui.dialogs.PreferencesUtil;
32
33 import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
34 import org.eclipse.jdt.internal.ui.JavaPlugin;
35 import org.eclipse.jdt.internal.ui.preferences.MembersOrderPreferencePage;
36 import org.eclipse.jdt.internal.ui.wizards.dialogfields.DialogField;
37 import org.eclipse.jdt.internal.ui.wizards.dialogfields.IDialogFieldListener;
38 import org.eclipse.jdt.internal.ui.wizards.dialogfields.LayoutUtil;
39 import org.eclipse.jdt.internal.ui.wizards.dialogfields.SelectionButtonDialogField;
40
41 public class SortMembersMessageDialog extends OptionalMessageDialog {
42
43         private final static String OPTIONAL_ID= "SortMembersMessageDialog.optionalDialog.id"; //$NON-NLS-1$
44
45         private final static String DIALOG_SETTINGS_SORT_ALL= "SortMembers.sort_all"; //$NON-NLS-1$
46
47         private SelectionButtonDialogField fNotSortAllRadio;
48         private SelectionButtonDialogField fSortAllRadio;
49
50         private final IDialogSettings fDialogSettings;
51
52         public SortMembersMessageDialog(Shell parentShell) {
53                 super(OPTIONAL_ID, parentShell, DialogsMessages.SortMembersMessageDialog_dialog_title, null, new String(), INFORMATION, new String[] {IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL}, 0);
54
55                 fDialogSettings= JavaPlugin.getDefault().getDialogSettings();
56
57                 boolean isSortAll= fDialogSettings.getBoolean(DIALOG_SETTINGS_SORT_ALL);
58
59                 fNotSortAllRadio= new SelectionButtonDialogField(SWT.RADIO);
60                 fNotSortAllRadio.setLabelText(DialogsMessages.SortMembersMessageDialog_do_not_sort_fields_label);
61                 fNotSortAllRadio.setSelection(!isSortAll);
62
63                 fSortAllRadio= new SelectionButtonDialogField(SWT.RADIO);
64                 fSortAllRadio.setLabelText(DialogsMessages.SortMembersMessageDialog_sort_all_label);
65                 fSortAllRadio.setSelection(isSortAll);
66         }
67
68         /*
69          * @see org.eclipse.jface.dialogs.Dialog#isResizable()
70          * @since 3.4
71          */
72         @Override
73         protected boolean isResizable() {
74                 return true;
75         }
76
77         private Control createLinkControl(Composite composite) {
78                 Link link= new Link(composite, SWT.WRAP | SWT.RIGHT);
79                 link.setText(DialogsMessages.SortMembersMessageDialog_description);
80                 link.addSelectionListener(new SelectionAdapter() {
81                         @Override
82                         public void widgetSelected(SelectionEvent e) {
83                                 openMembersSortOrderPage();
84                         }
85                 });
86                 link.setToolTipText(DialogsMessages.SortMembersMessageDialog_link_tooltip);
87                 GridData gridData= new GridData(GridData.FILL, GridData.CENTER, true, false);
88                 gridData.widthHint= convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);//convertWidthInCharsToPixels(60);
89                 link.setLayoutData(gridData);
90                 link.setFont(composite.getFont());
91
92                 return link;
93         }
94
95         /**
96          * Opens the 'Members Sort Order' preference page.
97          */
98         protected void openMembersSortOrderPage() {
99                 PreferencesUtil.createPreferenceDialogOn(getShell(), MembersOrderPreferencePage.PREF_ID, null, null).open();
100         }
101
102         /*
103          * @see org.eclipse.jface.dialogs.IconAndMessageDialog#createContents(org.eclipse.swt.widgets.Composite)
104          */
105         @Override
106         protected Control createContents(Composite parent) {
107                 Control contents= super.createContents(parent);
108                 PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IJavaHelpContextIds.SORT_MEMBERS_DIALOG);
109                 return contents;
110         }
111
112         /* (non-Javadoc)
113          * @see org.eclipse.jface.dialogs.IconAndMessageDialog#createMessageArea(org.eclipse.swt.widgets.Composite)
114          */
115         @Override
116         protected Control createMessageArea(Composite parent) {
117                 initializeDialogUnits(parent);
118
119                 Composite messageComposite= new Composite(parent, SWT.NONE);
120                 messageComposite.setFont(parent.getFont());
121                 GridLayout layout= new GridLayout();
122                 layout.numColumns= 1;
123                 layout.marginHeight= 0;
124                 layout.marginWidth= 0;
125                 layout.verticalSpacing= convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
126                 layout.horizontalSpacing= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
127                 messageComposite.setLayout(layout);
128                 messageComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
129
130                 createLinkControl(messageComposite);
131
132                 int indent= convertWidthInCharsToPixels(3);
133
134                 fNotSortAllRadio.doFillIntoGrid(messageComposite, 1);
135                 LayoutUtil.setHorizontalIndent(fNotSortAllRadio.getSelectionButton(null), indent);
136
137                 fSortAllRadio.doFillIntoGrid(messageComposite, 1);
138                 LayoutUtil.setHorizontalIndent(fSortAllRadio.getSelectionButton(null), indent);
139
140                 final Composite warningComposite= new Composite(messageComposite, SWT.NONE);
141                 layout= new GridLayout();
142                 layout.numColumns= 2;
143                 layout.marginWidth= 0;
144                 layout.marginHeight= 0;
145                 warningComposite.setLayout(layout);
146                 warningComposite.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
147                 warningComposite.setFont(messageComposite.getFont());
148
149                 Image image= Dialog.getImage(Dialog.DLG_IMG_MESSAGE_WARNING);
150                 final Label imageLabel1= new Label(warningComposite, SWT.LEFT | SWT.WRAP);
151                 imageLabel1.setImage(image);
152                 imageLabel1.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 1, 1));
153
154                 final Label label= new Label(warningComposite, SWT.WRAP);
155                 label.setText(DialogsMessages.SortMembersMessageDialog_sort_warning_label);
156                 GridData gridData= new GridData(GridData.FILL, GridData.CENTER, true, false, 1, 1);
157                 gridData.widthHint= convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
158                 label.setLayoutData(gridData);
159                 label.setFont(warningComposite.getFont());
160
161                 fNotSortAllRadio.setDialogFieldListener(new IDialogFieldListener() {
162                         public void dialogFieldChanged(DialogField field) {
163                                 imageLabel1.setEnabled(!fNotSortAllRadio.isSelected());
164                                 label.setEnabled(!fNotSortAllRadio.isSelected());
165                         }
166                 });
167                 imageLabel1.setEnabled(!fNotSortAllRadio.isSelected());
168                 label.setEnabled(!fNotSortAllRadio.isSelected());
169
170                 return messageComposite;
171         }
172
173         /* (non-Javadoc)
174          * @see org.eclipse.jface.window.Window#open()
175          */
176         @Override
177         public int open() {
178                 if (isDialogEnabled(OPTIONAL_ID))
179                         return super.open();
180                 return Window.OK;
181         }
182
183
184         /* (non-Javadoc)
185          * @see org.eclipse.jface.dialogs.Dialog#close()
186          */
187         @Override
188         public boolean close() {
189                 fDialogSettings.put(DIALOG_SETTINGS_SORT_ALL, fSortAllRadio.isSelected());
190                 return super.close();
191         }
192
193
194         public boolean isNotSortingFieldsEnabled() {
195                 return fNotSortAllRadio.isSelected();
196         }
197
198 }