/******************************************************************************* * Copyright (c) 2004, 2007 Boeing. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Boeing - initial API and implementation *******************************************************************************/ package org.eclipse.osee.framework.ui.skynet; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; import java.util.logging.Level; import org.eclipse.core.runtime.Preferences; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.osee.framework.core.client.CoreClientActivator; import org.eclipse.osee.framework.core.client.CorePreferences; import org.eclipse.osee.framework.jdk.core.util.Network; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.SkynetActivator; import org.eclipse.osee.framework.skynet.core.preferences.PreferenceConstants; import org.eclipse.osee.framework.ui.plugin.OseeUiActivator; 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.Group; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; /** * This class represents a preference page that is contributed to the Preferences dialog. By subclassing * FieldEditorPreferencePage, we can use the field support built into JFace that allows us to create a page * that is small and knows how to save, restore and apply itself. *

* This page is used to modify preferences only. They are stored in the preference store that belongs to the main * plug-in class. That way, preferences can be accessed directly via the preference store. */ public class OseePreferencePage extends PreferencePage implements IWorkbenchPreferencePage { private HashMap networkButtons; private Button wordWrapChkBox; private OseeUiActivator plugin = SkynetActivator.getInstance(); private void createNetworkAdapterArea(Composite parent) { addDialogControls(parent); setupWordWrapChkButton(); } private void addDialogControls(Composite parent) { Group group = new Group(parent, SWT.NONE); group.setLayout(new GridLayout(2, false)); GridData gd = new GridData(); gd.verticalAlignment = GridData.FILL; gd.horizontalAlignment = GridData.FILL; gd.grabExcessHorizontalSpace = true; group.setLayoutData(gd); wordWrapChkBox = new Button(group, SWT.CHECK); wordWrapChkBox.setText("Use alternate hyperlink drag method"); // setup the default network selection Group networkAdapter = new Group(parent, SWT.NONE); networkAdapter.setLayout(new GridLayout()); networkAdapter.setText("Select a Default Network Adaptor"); gd = new GridData(); gd.verticalAlignment = GridData.FILL; gd.horizontalAlignment = GridData.FILL; gd.grabExcessHorizontalSpace = true; networkAdapter.setLayoutData(gd); setupInetAddressButtons(networkAdapter); } private void setupInetAddressButtons(Group group) { InetAddress[] addrs = null; try { addrs = Network.getLocalNetworkAdapters(); } catch (UnknownHostException ex) { OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex); } networkButtons = new HashMap(); Button defaultButton = new Button(group, SWT.RADIO); defaultButton.setText("Default"); for (int i = 0; addrs != null && i < addrs.length; i++) { Button button = new Button(group, SWT.RADIO); button.setText(addrs[i].getHostAddress() + " " + addrs[i].getHostName()); networkButtons.put(addrs[i], button); } Preferences prefStore = CoreClientActivator.getInstance().getPluginPreferences(); String inetaddress = prefStore.getString(CorePreferences.INETADDRESS_KEY); boolean addressSelected = false; if (inetaddress != null && !inetaddress.equals("")) { for (InetAddress address : networkButtons.keySet()) { if (address.getHostAddress().equals(inetaddress)) { networkButtons.get(address).setSelection(true); addressSelected = true; } } } if (!addressSelected) { defaultButton.setSelection(true); } } private void setupWordWrapChkButton() { IPreferenceStore prefStore = plugin.getPreferenceStore(); wordWrapChkBox.setSelection(prefStore.getString(PreferenceConstants.WORDWRAP_KEY) != null && prefStore.getString( PreferenceConstants.WORDWRAP_KEY).equals(IPreferenceStore.TRUE)); } private void createBlankArea(Composite parent, int height, boolean allVertical) { Composite blank = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(); GridData gd = new GridData(); gd.minimumHeight = height; gd.grabExcessHorizontalSpace = true; gd.grabExcessVerticalSpace = allVertical; blank.setLayout(gridLayout); blank.setLayoutData(gd); } protected Control createContents(Composite parent) { createNetworkAdapterArea(parent); createBlankArea(parent, 300, true); return parent; } /** * initialize the preference store to use with the workbench */ public void init(IWorkbench workbench) { // Initialize the preference store we wish to use setPreferenceStore(plugin.getPreferenceStore()); } protected void performDefaults() { } protected void performApply() { performOk(); } public boolean performOk() { Preferences prefStore = CoreClientActivator.getInstance().getPluginPreferences(); prefStore.setValue(CorePreferences.INETADDRESS_KEY, ""); for (InetAddress address : networkButtons.keySet()) { if (networkButtons.get(address).getSelection()) { prefStore.setValue(CorePreferences.INETADDRESS_KEY, address.getHostAddress()); break; } } SkynetActivator.getInstance().getPreferenceStore().putValue(PreferenceConstants.WORDWRAP_KEY, wordWrapChkBox.getSelection() ? IPreferenceStore.TRUE : IPreferenceStore.FALSE); return super.performOk(); } }