trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/engine/preferences/TraceViewerConnectionPreferencesPage.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/engine/preferences/TraceViewerConnectionPreferencesPage.java Wed Jun 23 14:49:59 2010 +0300
@@ -0,0 +1,210 @@
+/*
+ * Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ * Connection preferences page
+ *
+ */
+package com.nokia.traceviewer.engine.preferences;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+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.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.PlatformUI;
+
+import com.nokia.carbide.remoteconnections.interfaces.IConnection;
+import com.nokia.traceviewer.TraceViewerHelpContextIDs;
+import com.nokia.traceviewer.TraceViewerPlugin;
+import com.nokia.traceviewer.engine.ConnectionHelper;
+import com.nokia.traceviewer.internal.api.TraceViewerAPI2Impl;
+
+/**
+ * Connection preferences page
+ *
+ */
+public final class TraceViewerConnectionPreferencesPage extends PreferencePage
+ implements IWorkbenchPreferencePage {
+
+ /**
+ * Id for Connection preferences page
+ */
+ public static final String PAGE_ID = "com.nokia.traceviewer.preferences.ConnectionPreferences"; //$NON-NLS-1$
+
+ /**
+ * PreferenceStore holding all preferences
+ */
+ private final IPreferenceStore store;
+
+ /**
+ * Auto-connect to dynamic connections checkbox
+ */
+ private Button autoConnectDynamicConnectionsCheckBox;
+
+ /**
+ * Connection that is used after latest call to <code>saveSettings()</code>
+ * method.
+ */
+ private IConnection conn;
+
+ /**
+ * Constructor
+ */
+ public TraceViewerConnectionPreferencesPage() {
+ super();
+
+ // Set the preference store for the preference page.
+ store = TraceViewerPlugin.getDefault().getPreferenceStore();
+ setPreferenceStore(store);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse
+ * .swt.widgets.Composite)
+ */
+ @Override
+ protected Control createContents(Composite parent) {
+
+ // Create Top composite in top of the parent composite
+ Composite top = new Composite(parent, SWT.LEFT);
+ GridData topCompositeGridData = new GridData(SWT.FILL, SWT.FILL, true,
+ false);
+ top.setLayoutData(topCompositeGridData);
+ GridLayout topCompositeGridLayout = new GridLayout();
+ topCompositeGridLayout.horizontalSpacing = 5;
+ topCompositeGridLayout.verticalSpacing = 5;
+ topCompositeGridLayout.marginWidth = 0;
+ topCompositeGridLayout.marginHeight = 0;
+ top.setLayout(topCompositeGridLayout);
+
+ // Create client side UI
+ Composite returnedComposite = ConnectionHelper
+ .createClientServiceUI(top);
+
+ // If client service UI couldn't be constructed, give an error message
+ // to the user
+ if (returnedComposite == null) {
+ Label errorLabel = new Label(top, SWT.NONE);
+ String msg = Messages
+ .getString("TraceViewerConnectionPreferencesPage.ServiceUiFailed"); //$NON-NLS-1$
+ errorLabel.setText(msg);
+ } else {
+
+ // Select connection from the UI with ID
+ String selectedConnId = store
+ .getString(PreferenceConstants.SELECTED_CONNECTION_ID);
+ ConnectionHelper.selectConnectionFromUIWithID(selectedConnId);
+ }
+
+ // Auto-connect to dynamic connections checkbox
+ autoConnectDynamicConnectionsCheckBox = new Button(top, SWT.CHECK);
+ String autoConnectText = Messages
+ .getString("TraceViewerConnectionPreferencesPage.AutoConnectDynamicText"); //$NON-NLS-1$
+ String autoConnectToolTip = Messages
+ .getString("TraceViewerConnectionPreferencesPage.AutoConnectDynamicToolTip"); //$NON-NLS-1$
+ autoConnectDynamicConnectionsCheckBox.setText(autoConnectText);
+ autoConnectDynamicConnectionsCheckBox
+ .setToolTipText(autoConnectToolTip);
+ autoConnectDynamicConnectionsCheckBox
+ .setSelection(store
+ .getBoolean(PreferenceConstants.AUTO_CONNECT_DYNAMIC_CONNECTIONS_CHECKBOX));
+
+ // Set help
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
+ TraceViewerHelpContextIDs.CONNECTION_PREFERENCES);
+
+ return top;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ */
+ public void init(IWorkbench workbench) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.PreferencePage#performOk()
+ */
+ @Override
+ public boolean performOk() {
+ saveSettings();
+ // Preferences has been saved successfully, notifying listeners about
+ // the change. Default implementation of super.performApply() calls back
+ // performOK() method so notification to listeners should be only sent
+ // in here. In case of Apply and OK sequence, however, the notification
+ // is sent twice. Only sent the notification if the connection ID is not
+ // the virtual "Current connection"
+ if (conn != null
+ && !conn.getIdentifier().equals(
+ ConnectionHelper.CURRENT_CONNECTION_ID)) {
+ TraceViewerAPI2Impl.notifyConnPrefsChanged(conn);
+ }
+ return super.performOk();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.PreferencePage#performApply()
+ */
+ @Override
+ public void performApply() {
+ saveSettings();
+ super.performApply();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+ */
+ @Override
+ protected void performDefaults() {
+ if (getControl() != null && !getControl().isDisposed()) {
+ autoConnectDynamicConnectionsCheckBox.setSelection(false);
+ }
+ super.performDefaults();
+ }
+
+ /**
+ * Saves settings
+ */
+ private void saveSettings() {
+ if (getControl() != null && !getControl().isDisposed()) {
+ conn = ConnectionHelper
+ .saveConnectionSettingsToPreferenceStore(false);
+
+ store
+ .setValue(
+ PreferenceConstants.AUTO_CONNECT_DYNAMIC_CONNECTIONS_CHECKBOX,
+ autoConnectDynamicConnectionsCheckBox
+ .getSelection());
+ }
+ }
+}