package net.sourceforge.tagsea.instrumentation.network.ui; import net.sourceforge.tagsea.instrumentation.InstrumentationPreferences; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.PlatformUI; public class ResearchPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { private Button monitorButton; private Combo uploadCombo; private Button registerButton; private RegisterComposite mainComposite; private int uploadInterval; private boolean monitoring; public ResearchPreferencePage() { } public ResearchPreferencePage(String title) { super(title); } public ResearchPreferencePage(String title, ImageDescriptor image) { super(title, image); } @Override protected Control createContents(Composite parent) { Composite page = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(2, false); page.setLayout(layout); Label label = new Label(page, SWT.NONE); label.setText("This version of TagSEA registered to:"); GridData data = new GridData(); data.horizontalSpan = 2; label.setLayoutData(data); mainComposite = new RegisterComposite(page, SWT.NONE); mainComposite.setEnabled(false); data = new GridData(SWT.FILL, SWT.BEGINNING, true, false); data.horizontalSpan = 2; mainComposite.setLayoutData(data); monitorButton = new Button(page, SWT.CHECK); monitorButton.setText("Monitor TagSEA Usage"); monitorButton.addSelectionListener(new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { monitoring = monitorButton.getSelection(); } }); data = new GridData(SWT.FILL, SWT.FILL, false, false); data.horizontalSpan = 2; monitorButton.setLayoutData(data); PlatformUI.getWorkbench().getHelpSystem().setHelp(monitorButton, "net.sourceforge.tagsea.instrumentation.monitor"); Label l = new Label(page, SWT.NONE); l.setText("Automatic uploads"); data = new GridData(SWT.FILL, SWT.FILL, false, false); l.setLayoutData(data); uploadCombo = new Combo(page, SWT.SINGLE); uploadCombo.setItems(new String[] {"Never", "Daily", "Weekly", "Every two weeks"}); uploadCombo.addSelectionListener(new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { uploadInterval = uploadCombo.getSelectionIndex(); } }); data = new GridData(SWT.FILL, SWT.FILL, false, false); uploadCombo.setLayoutData(data); PlatformUI.getWorkbench().getHelpSystem().setHelp(uploadCombo, "net.sourceforge.tagsea.instrumentation.consent"); registerButton = new Button(page, SWT.PUSH); registerButton.addSelectionListener(new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { WizardDialog wizard = new WizardDialog(getShell(), new RegisterWizard()); wizard.setTitle("Register TagSEA"); int oldId = InstrumentationPreferences.getUID(); if (InstrumentationPreferences.isRegistered()) { //unregister InstrumentationPreferences.setUID(-1); } int code = wizard.open(); if (code == WizardDialog.CANCEL) { InstrumentationPreferences.setUID(oldId); } InstrumentationPreferences.setAskForRegistration(false); refresh(); } }); data = new GridData(SWT.FILL, SWT.FILL, false, false); registerButton.setLayoutData(data); PlatformUI.getWorkbench().getHelpSystem().setHelp(registerButton, "net.sourceforge.tagsea.instrumentation.register"); PlatformUI.getWorkbench().getHelpSystem().setHelp(page, "net.sourceforge.tagsea.instrumentation.consent"); refresh(); return page; } /** * */ protected void refresh() { uploadInterval = InstrumentationPreferences.getUploadInterval(); uploadCombo.setText(uploadCombo.getItem(uploadInterval)); monitoring = InstrumentationPreferences.isMonitoringEnabled(); monitorButton.setSelection(monitoring); boolean registered = InstrumentationPreferences.isRegistered(); registerButton.setText((registered) ? "Reregister TagSEA" : "Register TagSEA"); uploadCombo.setEnabled(registered); monitorButton.setEnabled(registered); mainComposite.refreshFromPreferences(); } @Override protected void performApply() { InstrumentationPreferences.setUploadInterval(uploadInterval); InstrumentationPreferences.setMonitoringEnabled(monitoring); super.performApply(); } public void init(IWorkbench workbench) { } }