diff -r ed1c9f64298a -r 5b9d4d8641ce 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 saveSettings() + * 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()); + } + } +}