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
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.jdt.internal.ui.dialogs;
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;
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;
30 import org.eclipse.ui.PlatformUI;
31 import org.eclipse.ui.dialogs.PreferencesUtil;
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;
41 public class SortMembersMessageDialog extends OptionalMessageDialog {
43 private final static String OPTIONAL_ID= "SortMembersMessageDialog.optionalDialog.id"; //$NON-NLS-1$
45 private final static String DIALOG_SETTINGS_SORT_ALL= "SortMembers.sort_all"; //$NON-NLS-1$
47 private SelectionButtonDialogField fNotSortAllRadio;
48 private SelectionButtonDialogField fSortAllRadio;
50 private final IDialogSettings fDialogSettings;
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);
55 fDialogSettings= JavaPlugin.getDefault().getDialogSettings();
57 boolean isSortAll= fDialogSettings.getBoolean(DIALOG_SETTINGS_SORT_ALL);
59 fNotSortAllRadio= new SelectionButtonDialogField(SWT.RADIO);
60 fNotSortAllRadio.setLabelText(DialogsMessages.SortMembersMessageDialog_do_not_sort_fields_label);
61 fNotSortAllRadio.setSelection(!isSortAll);
63 fSortAllRadio= new SelectionButtonDialogField(SWT.RADIO);
64 fSortAllRadio.setLabelText(DialogsMessages.SortMembersMessageDialog_sort_all_label);
65 fSortAllRadio.setSelection(isSortAll);
69 * @see org.eclipse.jface.dialogs.Dialog#isResizable()
73 protected boolean isResizable() {
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() {
82 public void widgetSelected(SelectionEvent e) {
83 openMembersSortOrderPage();
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());
96 * Opens the 'Members Sort Order' preference page.
98 protected void openMembersSortOrderPage() {
99 PreferencesUtil.createPreferenceDialogOn(getShell(), MembersOrderPreferencePage.PREF_ID, null, null).open();
103 * @see org.eclipse.jface.dialogs.IconAndMessageDialog#createContents(org.eclipse.swt.widgets.Composite)
106 protected Control createContents(Composite parent) {
107 Control contents= super.createContents(parent);
108 PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IJavaHelpContextIds.SORT_MEMBERS_DIALOG);
113 * @see org.eclipse.jface.dialogs.IconAndMessageDialog#createMessageArea(org.eclipse.swt.widgets.Composite)
116 protected Control createMessageArea(Composite parent) {
117 initializeDialogUnits(parent);
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));
130 createLinkControl(messageComposite);
132 int indent= convertWidthInCharsToPixels(3);
134 fNotSortAllRadio.doFillIntoGrid(messageComposite, 1);
135 LayoutUtil.setHorizontalIndent(fNotSortAllRadio.getSelectionButton(null), indent);
137 fSortAllRadio.doFillIntoGrid(messageComposite, 1);
138 LayoutUtil.setHorizontalIndent(fSortAllRadio.getSelectionButton(null), indent);
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());
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));
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());
161 fNotSortAllRadio.setDialogFieldListener(new IDialogFieldListener() {
162 public void dialogFieldChanged(DialogField field) {
163 imageLabel1.setEnabled(!fNotSortAllRadio.isSelected());
164 label.setEnabled(!fNotSortAllRadio.isSelected());
167 imageLabel1.setEnabled(!fNotSortAllRadio.isSelected());
168 label.setEnabled(!fNotSortAllRadio.isSelected());
170 return messageComposite;
174 * @see org.eclipse.jface.window.Window#open()
178 if (isDialogEnabled(OPTIONAL_ID))
185 * @see org.eclipse.jface.dialogs.Dialog#close()
188 public boolean close() {
189 fDialogSettings.put(DIALOG_SETTINGS_SORT_ALL, fSortAllRadio.isSelected());
190 return super.close();
194 public boolean isNotSortingFieldsEnabled() {
195 return fNotSortAllRadio.isSelected();