package org.xmind.ui.internal.views;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
import org.eclipse.jface.resource.ResourceManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.xmind.ui.internal.MindMapUIPlugin;
import org.xmind.ui.prefs.PrefConstants;
import org.xmind.ui.resources.ColorUtils;
class ThemeOverrideDialog extends Dialog {
private Button rememberCheck;
private ResourceManager resources;
protected ThemeOverrideDialog(Shell parentShell) {
super(parentShell);
resources = new LocalResourceManager(JFaceResources.getResources(),
parentShell);
}
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(Messages.ThemesView_Dialog_title);
}
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
Label label = new Label(composite, SWT.NONE);
label.setText(Messages.ThemesView_Dialog_message);
createRememberCheck(composite);
return composite;
}
private void createRememberCheck(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout gridLayout = new GridLayout(1, false);
gridLayout.marginTop = 25;
composite.setLayout(gridLayout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
rememberCheck = new Button(composite, SWT.CHECK);
rememberCheck.setText(Messages.ThemesView_Dialog_Check);
rememberCheck
.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, true));
}
protected Control createButtonBar(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
GridLayout gridLayout = new GridLayout(2, false);
gridLayout.marginWidth = convertHorizontalDLUsToPixels(
IDialogConstants.HORIZONTAL_MARGIN);
gridLayout.marginHeight = convertVerticalDLUsToPixels(
IDialogConstants.VERTICAL_MARGIN);
gridLayout.marginBottom = convertVerticalDLUsToPixels(
IDialogConstants.VERTICAL_MARGIN);
gridLayout.verticalSpacing = convertVerticalDLUsToPixels(
IDialogConstants.VERTICAL_SPACING);
gridLayout.horizontalSpacing = convertHorizontalDLUsToPixels(
IDialogConstants.HORIZONTAL_SPACING);
composite.setLayout(gridLayout);
createPrefLink(composite);
Composite buttonBar = new Composite(composite, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 0; // this is incremented by createButton
layout.makeColumnsEqualWidth = false;
layout.marginWidth = 0;
layout.marginHeight = 0;
layout.horizontalSpacing = convertHorizontalDLUsToPixels(
IDialogConstants.HORIZONTAL_SPACING);
layout.verticalSpacing = convertVerticalDLUsToPixels(
IDialogConstants.VERTICAL_SPACING);
buttonBar.setLayout(layout);
buttonBar.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, true));
buttonBar.setFont(parent.getFont());
createButtonsForButtonBar(buttonBar);
return buttonBar;
}
private void createPrefLink(Composite parent) {
Hyperlink prefLink = new Hyperlink(parent, SWT.SINGLE);
prefLink.setText(Messages.ThemesView_Dialog_PrefLink);
prefLink.setUnderlined(false);
prefLink.setForeground(
resources.createColor(ColorUtils.toDescriptor("#0082F9"))); //$NON-NLS-1$
prefLink.addHyperlinkListener(new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent e) {
PreferencesUtil
.createPreferenceDialogOn(null,
"org.xmind.ui.ThemePrefPage", null, null) //$NON-NLS-1$
.open();
}
});
prefLink.getParent().setFocus();
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID,
Messages.ThemesView_OverrideButton, true);
createButton(parent, IDialogConstants.NO_ID,
Messages.ThemesView_KeepButton, false);
}
@Override
protected void buttonPressed(int buttonId) {
super.buttonPressed(buttonId);
if (IDialogConstants.NO_ID == buttonId)
noPressed();
}
@Override
protected void okPressed() {
IPreferenceStore pref = MindMapUIPlugin.getDefault()
.getPreferenceStore();
if (rememberCheck.getSelection())
pref.setValue(PrefConstants.THEME_APPLY,
PrefConstants.THEME_OVERRIDE);
else
pref.setValue(PrefConstants.THEME_APPLY, PrefConstants.ASK_USER);
super.okPressed();
}
private void noPressed() {
IPreferenceStore pref = MindMapUIPlugin.getDefault()
.getPreferenceStore();
if (rememberCheck.getSelection())
pref.setValue(PrefConstants.THEME_APPLY, PrefConstants.THEME_KEEP);
else
pref.setValue(PrefConstants.THEME_APPLY, PrefConstants.ASK_USER);
setReturnCode(IDialogConstants.NO_ID);
close();
}
}