--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysperfana/perfinvestigator/com.nokia.carbide.cpp.pi.wizards/src/com/nokia/carbide/cpp/internal/pi/wizards/ui/util/SdkChooserBase.java Thu Feb 11 15:32:31 2010 +0200
@@ -0,0 +1,256 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "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:
+ *
+ */
+
+package com.nokia.carbide.cpp.internal.pi.wizards.ui.util;
+
+import java.util.List;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+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.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+
+import com.nokia.carbide.cpp.sdk.core.ISDKManager;
+import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
+import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
+import com.nokia.carbide.cpp.sdk.ui.shared.AddSDKDialog;
+
+// just gather all composite layout stuff here, so both Dialog
+// and Wizard can be the same layout, they should call layout
+// in their layout code
+// Wizard would setControl(layout(parent)) in createControl
+// Dialog would return layout(parent); in layout code e.g. createDialogArea()
+public class SdkChooserBase {
+ // control
+ public Composite composite = null;
+ public Label label = null;
+ public Composite epocrootComposite = null;
+ public Table sdkTable = null;
+ public Composite buttonComposite = null;
+ public Button addSdkButton = null;
+ public Button removeSdkButton = null;
+ public Group sdkGroup = null;
+ public Label directoryDataLabel = null;
+ public Label epocrootLabel = null;
+ public Label osVersionDataLabel = null;
+ public Label osVersionLabel = null;
+ public Label platformDataLabel = null;
+ public Label platformLabel = null;
+
+ public Composite layout(Composite parent) {
+ SDKCorePlugin.getSDKManager();
+ GridLayout gridLayout1 = new GridLayout();
+ gridLayout1.numColumns = 1;
+ composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(gridLayout1);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ label = new Label(composite, SWT.NONE);
+ label.setText(Messages.getString("SdkChooserBase.label")); //$NON-NLS-1$
+ createEpocrootComposite();
+ createSDKGroup();
+
+ return composite;
+ }
+
+ /**
+ * This method initializes epocrootComposite
+ *
+ */
+ private void createEpocrootComposite() {
+ GridLayout gridLayout2 = new GridLayout();
+ gridLayout2.numColumns = 2;
+ epocrootComposite = new Composite(composite, SWT.NONE);
+ epocrootComposite.setLayout(gridLayout2);
+ GridData gridData1 = new GridData();
+ gridData1.horizontalAlignment = GridData.FILL;
+ gridData1.grabExcessHorizontalSpace = true;
+ epocrootComposite.setLayoutData(gridData1);
+ sdkTable = new Table(epocrootComposite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE);
+ sdkTable.setHeaderVisible(false);
+ GridData gridData2 = new GridData();
+ gridData2.horizontalAlignment = GridData.FILL;
+ gridData2.grabExcessHorizontalSpace = true;
+ sdkTable.setLayoutData(gridData2);
+ sdkTable.setLinesVisible(false);
+
+ createButtonComposite();
+
+ sdkTable.addSelectionListener(new SelectionListener() {
+
+ public void widgetDefaultSelected(SelectionEvent arg0) {
+ }
+
+ public void widgetSelected(SelectionEvent arg0) {
+ propagateSdkDetail();
+ }
+
+ });
+ }
+
+ private void createButtonComposite() {
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 1;
+ buttonComposite = new Composite(epocrootComposite, SWT.NONE);
+ buttonComposite.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
+ buttonComposite.setLayout(gridLayout);
+ addSdkButton = new Button (buttonComposite, SWT.NONE);
+ addSdkButton.setText(Messages.getString("SdkChooserBase.addsdk.button")); //$NON-NLS-1$
+ removeSdkButton = new Button (buttonComposite, SWT.NONE);
+ removeSdkButton.setText(Messages.getString("SdkChooserBase.removesdk.button")); //$NON-NLS-1$
+
+ GridData buttonWidthGridData = new GridData();
+ buttonWidthGridData.widthHint = Math.max(addSdkButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x, removeSdkButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ addSdkButton.setLayoutData(buttonWidthGridData);
+ removeSdkButton.setLayoutData(buttonWidthGridData);
+
+ addSdkButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetDefaultSelected(SelectionEvent arg0) {
+ }
+
+ public void widgetSelected(SelectionEvent arg0) {
+ handleAddSdk();
+ }
+
+ });
+ removeSdkButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetDefaultSelected(SelectionEvent arg0) {
+ }
+
+ public void widgetSelected(SelectionEvent arg0) {
+ handleRemoveSdk();
+ }
+
+ });
+ propagateSdkFromManager();
+ }
+
+ private void createSDKGroup() {
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
+ sdkGroup = new Group(composite, SWT.NONE);
+ sdkGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ sdkGroup.setLayout(gridLayout);
+ sdkGroup.setText(Messages.getString("SdkChooserBase.sdk.group")); //$NON-NLS-1$
+
+ epocrootLabel = new Label(sdkGroup, SWT.NONE);
+ epocrootLabel.setText(Messages.getString("SdkChooserBase.epocroot.label")); //$NON-NLS-1$
+ directoryDataLabel = new Label(sdkGroup, SWT.WRAP);
+ directoryDataLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ directoryDataLabel.setText(Messages.getString("SdkChooserBase.directorydata.label")); //$NON-NLS-1$
+ osVersionLabel = new Label(sdkGroup, SWT.NONE);
+ osVersionLabel.setText(Messages.getString("SdkChooserBase.osversion.label")); //$NON-NLS-1$
+ osVersionDataLabel = new Label(sdkGroup, SWT.WRAP);
+ osVersionDataLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ osVersionDataLabel.setText(Messages.getString("SdkChooserBase.osversiondata.label")); //$NON-NLS-1$
+ platformLabel = new Label(sdkGroup, SWT.NONE);
+ platformLabel.setText(Messages.getString("SdkChooserBase.platform.label")); //$NON-NLS-1$
+ platformDataLabel = new Label(sdkGroup, SWT.WRAP);
+ platformDataLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ platformDataLabel.setText(Messages.getString("SdkChooserBase.platformdata.label")); //$NON-NLS-1$
+
+ }
+
+ public void propagateSdkFromManager() {
+ List<ISymbianSDK> sdkList = getSDKList();
+ sdkTable.removeAll();
+ for (ISymbianSDK sdk : sdkList) {
+ TableItem item = new TableItem(sdkTable, SWT.NONE);
+ item.setText(sdk.getUniqueId());
+ item.setData(sdk);
+ }
+ if (sdkList.size() == 1) {
+ sdkTable.select(0);
+ }
+ }
+
+ public void propagateSdkDetail() {
+ TableItem[] items = sdkTable.getSelection();
+ if (items.length > 0) {
+ ISymbianSDK sdk = (ISymbianSDK) items[0].getData();
+ if (sdk != null) {
+ directoryDataLabel.setText(sdk.getEPOCROOT());
+ osVersionDataLabel.setText(sdk.getOSVersion().toString());
+ platformDataLabel.setText(sdk.getAvailablePlatforms().toString());
+ }
+ } else {
+ directoryDataLabel.setText(Messages.getString("SdkChooserBase.directorydata.label")); //$NON-NLS-1$
+ osVersionDataLabel.setText(Messages.getString("SdkChooserBase.osversiondata.label")); //$NON-NLS-1$
+ platformDataLabel.setText(Messages.getString("SdkChooserBase.platformdata.label2")); //$NON-NLS-1$
+ }
+ }
+
+ private void handleAddSdk() {
+ AddSDKDialog dialog = new AddSDKDialog(composite.getShell());
+ if (dialog.open() == AddSDKDialog.OK){
+ getSDKManager().updateCarbideSDKCache();
+ propagateSdkFromManager();
+ }
+ }
+
+ private void handleRemoveSdk() {
+ TableItem[] items = sdkTable.getSelection();
+ if (items.length > 0) {
+ ISymbianSDK sdk = (ISymbianSDK) items[0].getData();
+ if (sdk != null){
+ if (MessageDialog.openConfirm(composite.getShell(), Messages.getString("SdkChooserBase.confirm.delete") + sdk.getUniqueId() , Messages.getString("SdkChooserBase.confirm.message"))){ //$NON-NLS-1$ //$NON-NLS-2$
+ if (getSDKManager().removeSDK(sdk.getUniqueId())){
+ getSDKList().remove(sdk);
+ getSDKManager().updateCarbideSDKCache();
+ propagateSdkFromManager();
+ }
+ }
+ }
+ }
+ }
+
+ public List<ISymbianSDK> getSDKList() {
+ return SDKCorePlugin.getSDKManager().getSDKList();
+ }
+
+ public ISDKManager getSDKManager() {
+ return SDKCorePlugin.getSDKManager();
+ }
+
+ public ISymbianSDK getSelectedSdk() {
+ TableItem[] items = sdkTable.getSelection();
+ if (items.length > 0) {
+ return ((ISymbianSDK) items[0].getData());
+ }
+ return null;
+ }
+
+ public void setSelectedSdk(ISymbianSDK romSdk) {
+ TableItem[] items = sdkTable.getItems();
+ sdkTable.deselectAll();
+ for (int i = 0; i < items.length; i++) {
+ if ((ISymbianSDK) items[i].getData() == romSdk) {
+ sdkTable.select(i);
+ }
+ }
+ propagateSdkDetail();
+ }
+}