trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/engine/preferences/TraceViewerConnectionPreferencesPage.java
/*
* 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());
}
}
}