package org.xmind.cathy.internal; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.Hyperlink; import org.xmind.core.usagedata.IUsageDataSampler; import org.xmind.core.usagedata.IUsageDataUploader; import org.xmind.ui.preference.PreferenceFieldEditorPageSection; import org.xmind.ui.resources.ColorUtils; public class StartupPreferencePageSection extends PreferenceFieldEditorPageSection implements IWorkbenchPreferencePage { private Composite container; private Button startupActionButton; private LocalResourceManager resources; @Override protected Control createContents(Composite parent) { if (null == container) this.container = parent; return super.createContents(parent); } protected IPreferenceStore doGetPreferenceStore() { return CathyPlugin.getDefault().getPreferenceStore(); } @Override protected void initialize() { super.initialize(); int startupAction = getPreferenceStore() .getInt(CathyPlugin.STARTUP_ACTION); startupActionButton .setSelection(startupAction == CathyPlugin.STARTUP_ACTION_LAST); } @Override public void createControl(Composite parent) { resources = new LocalResourceManager(JFaceResources.getResources(), parent); super.createControl(parent); } @Override protected void createFieldEditors() { addStartupGroup(container); addSendUsageDataGroup(container); this.initialize(); } private void addStartupGroup(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayoutFactory.fillDefaults().applyTo(container); GridDataFactory.fillDefaults().indent(25, 0).applyTo(container); startupActionButton = new Button(container, SWT.CHECK); startupActionButton.setText(WorkbenchMessages.RestoreLastSession_label); addField(new BooleanFieldEditor(CathyPlugin.CHECK_UPDATES_ON_STARTUP, WorkbenchMessages.CheckUpdates_label, container)); } private void addSendUsageDataGroup(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridDataFactory.fillDefaults().indent(25, 0).applyTo(composite); GridLayoutFactory.fillDefaults().numColumns(2).spacing(5, 0) .applyTo(composite); Composite composite2 = new Composite(composite, SWT.NONE); composite2.setLayoutData( new GridData(SWT.LEFT, SWT.CENTER, false, false)); GridLayoutFactory.fillDefaults().applyTo(composite2); addField(new BooleanFieldEditor( CathyPlugin.USAGE_DATA_UPLOADING_ENABLED, WorkbenchMessages.GeneralPrefPage_usageData_text, composite2)); // Hyperlink privacyHyperlink = new Hyperlink(composite, SWT.NONE); privacyHyperlink.setBackground(composite.getBackground()); privacyHyperlink.setLayoutData( new GridData(SWT.LEFT, SWT.CENTER, false, false)); privacyHyperlink .setText(WorkbenchMessages.GeneralPrefPage_seePolicy_link); privacyHyperlink.setUnderlined(true); privacyHyperlink.setForeground( (Color) resources.get(ColorUtils.toDescriptor("#006CF9"))); //$NON-NLS-1$ privacyHyperlink.addHyperlinkListener(new HyperlinkAdapter() { public void linkActivated(HyperlinkEvent e) { Program.launch("http://www.xmind.net/privacy/usage/"); //$NON-NLS-1$ } }); composite.setFocus(); if (CathyPlugin.getDefault() .isDebugging("/debug/udc/showUploadButton")) { //$NON-NLS-1$ Button uploadButton = new Button(composite, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.BEGINNING, SWT.CENTER) .span(2, 0).indent(10, 0).minSize(100, 0) .applyTo(uploadButton); uploadButton.setBackground(composite.getBackground()); uploadButton.setText("Upload Now"); //$NON-NLS-1$ uploadButton.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { IUsageDataSampler sampler = CathyPlugin.getDefault() .getUsageDataCollector(); if (sampler instanceof IUsageDataUploader) { ((IUsageDataUploader) sampler).forceUpload(); } } }); } } @Override public boolean performOk() { if (!super.performOk()) return false; if (startupActionButton.getSelection()) { getPreferenceStore().setValue(CathyPlugin.STARTUP_ACTION, CathyPlugin.STARTUP_ACTION_LAST); } else { getPreferenceStore().setValue(CathyPlugin.STARTUP_ACTION, CathyPlugin.STARTUP_ACTION_WIZARD); } return true; } }