sysperfana/perfinvestigator/com.nokia.carbide.cpp.pi.wizards/src/com/nokia/carbide/cpp/internal/pi/wizards/ui/NewPIWizardPageCustomTask.java
changeset 2 b9ab3b238396
child 12 ae255c9aa552
--- /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/NewPIWizardPageCustomTask.java	Thu Feb 11 15:32:31 2010 +0200
@@ -0,0 +1,243 @@
+/*
+ * 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;
+
+import java.io.File;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+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.FileDialog;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
+
+import com.nokia.carbide.cpp.internal.pi.wizards.ui.util.CarbidePiWizardHelpIds;
+
+
+public class NewPIWizardPageCustomTask
+extends NewPIWizardPage
+implements INewPIWizardSettings
+{
+private final static String UID_PROPERTY= ".uid"; //$NON-NLS-1$
+private final static String DAT_EXTENSION= "dat"; //$NON-NLS-1$
+
+protected NewPIWizardPageCustomTask(final NewPIWizard wizard) {
+	super(Messages.getString("NewPIWizardPageCustomTask.super.label")); //$NON-NLS-1$
+	setTitle(Messages.getString("NewPIWizardPageCustomTask.title")); //$NON-NLS-1$
+    setDescription(Messages.getString("NewPIWizardPageCustomTask.description")); //$NON-NLS-1$
+}
+
+// controls
+Composite container;
+Group formatGroup;
+Composite optionComposite;
+Group exampleGroup;
+Group baseGroup;
+Group seperatorGroup;
+Button buttonValue;
+Button buttonName;
+Button buttonSemicolon;
+Button buttonComma;
+Button buttonSpace;
+
+private Text sampleFileText;
+
+public void createControl(Composite parent) {
+	super.createControl(parent);
+	container = new Composite(parent, SWT.NULL);
+	container.setData(UID_PROPERTY, "container"); //$NON-NLS-1$
+	GridLayout layout = new GridLayout();
+	container.setLayout(layout);
+	layout.numColumns = 1;
+	layout.verticalSpacing = 9;
+
+	Label labelDetailLabel = new Label(container, SWT.NONE);
+	labelDetailLabel.setText(Messages.getString("NewPIWizardPageCustomTask.detail.label")); //$NON-NLS-1$
+
+	Label labelSampleFile = new Label(container, SWT.NONE);
+	labelSampleFile.setText(Messages.getString("NewPIWizardPageSampleFile.dat.file.name")); //$NON-NLS-1$
+	
+	// subcomposite with textbox/button
+	Composite subContainer = new Composite(container, SWT.NULL);
+	subContainer.setData(UID_PROPERTY, "subContainer"); //$NON-NLS-1$
+	GridLayout subLayout = new GridLayout();
+	subContainer.setLayout(subLayout);
+	subContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+	subLayout.numColumns = 2;
+	subLayout.verticalSpacing = 9;
+
+	sampleFileText = new Text(subContainer, SWT.BORDER | SWT.SINGLE);
+	sampleFileText.setData(UID_PROPERTY, "sampleFileText"); //$NON-NLS-1$
+	sampleFileText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+	sampleFileText.addModifyListener(new ModifyListener() {
+		public void modifyText(ModifyEvent e) {
+			validatePage();
+		}
+	});
+
+	Button button = new Button(subContainer, SWT.PUSH);
+	button.setText(Messages.getString("NewPIWizardPageSampleFile.browse")); //$NON-NLS-1$
+	button.addSelectionListener(new SelectionAdapter() {
+		public void widgetSelected(SelectionEvent e) {
+			handleBrowse();
+		}
+	});
+	
+	// group with the options
+	formatGroup = new Group(container, SWT.NONE);
+	GridLayout groupLayout = new GridLayout();
+	groupLayout.numColumns = 2;
+	groupLayout.verticalSpacing = 9;
+	formatGroup.setLayout(groupLayout);
+	formatGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+	formatGroup.setText(Messages.getString("NewPIWizardPageCustomTask.format.group")); //$NON-NLS-1$
+	optionComposite = new Composite (formatGroup, SWT.NONE);
+	GridLayout optionLayout = new GridLayout();
+	optionLayout.numColumns = 1;
+	optionLayout.verticalSpacing = 9;
+	optionComposite.setLayout(optionLayout);
+	optionComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+	
+	exampleGroup = new Group(formatGroup, SWT.NONE);
+	GridLayout exampleLayout = new GridLayout();
+	exampleLayout.numColumns = 2;
+	exampleLayout.verticalSpacing = 9;
+	exampleGroup.setLayout(groupLayout);
+	exampleGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+	exampleGroup.setText(Messages.getString("NewPIWizardPageCustomTask.example.group")); //$NON-NLS-1$
+	Text exampleText = new Text(exampleGroup, SWT.NONE);
+	exampleText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+	baseGroup = new Group(optionComposite, SWT.NONE);
+	GridLayout baseLayout = new GridLayout();
+	baseLayout.numColumns = 1;
+	baseLayout.verticalSpacing = 9;
+	baseGroup.setLayout(optionLayout);
+	baseGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+	baseGroup.setText(Messages.getString("NewPIWizardPageCustomTask.base.group")); //$NON-NLS-1$
+	buttonValue = new Button(baseGroup, SWT.RADIO);
+	buttonValue.setText(Messages.getString("NewPIWizardPageCustomTask.button.value")); //$NON-NLS-1$
+	buttonName = new Button(baseGroup, SWT.RADIO);
+	buttonName.setText(Messages.getString("NewPIWizardPageCustomTask.button.name")); //$NON-NLS-1$
+	seperatorGroup = new Group(optionComposite, SWT.NONE);
+	GridLayout seperatorLayout = new GridLayout();
+	seperatorLayout.numColumns = 1;
+	seperatorLayout.verticalSpacing = 9;
+	seperatorGroup.setLayout(optionLayout);
+	seperatorGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+	seperatorGroup.setText(Messages.getString("NewPIWizardPageCustomTask.seperator.group")); //$NON-NLS-1$
+	buttonSemicolon = new Button(seperatorGroup, SWT.RADIO);
+	buttonSemicolon.setText(Messages.getString("NewPIWizardPageCustomTask.button.semicolon")); //$NON-NLS-1$
+	buttonComma = new Button(seperatorGroup, SWT.RADIO);
+	buttonComma.setText(Messages.getString("NewPIWizardPageCustomTask.button.comma")); //$NON-NLS-1$
+	buttonSpace = new Button(seperatorGroup, SWT.RADIO);
+	buttonSpace.setText(Messages.getString("NewPIWizardPageCustomTask.button.space")); //$NON-NLS-1$
+	
+	// fake default for demo
+	sampleFileText.setText(Messages.getString("NewPIWizardPageCustomTask.13")); //$NON-NLS-1$
+	buttonValue.setSelection(true);
+	buttonName.setSelection(false);
+	buttonSemicolon.setSelection(true);
+	buttonComma.setSelection(false);
+	buttonSpace.setSelection(false);
+	exampleText.setText(Messages.getString("NewPIWizardPageCustomTask.14")); //$NON-NLS-1$
+	
+	
+	validatePage();
+	setControl(container);
+	PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), CarbidePiWizardHelpIds.PI_IMPORT_WIZARD_CUSTOM);
+}
+
+public void validatePage() {
+	if (sampleFileText.getText().length() == 0) {
+		updateStatus(Messages.getString("NewPIWizardCustomTask.dat.file.name.must.be.specified")); //$NON-NLS-1$
+		return;
+	}
+	int dotLoc = sampleFileText.getText().lastIndexOf('.');
+	if (dotLoc != -1) {
+		String ext = sampleFileText.getText().substring(dotLoc + 1);
+		if (ext.equalsIgnoreCase(DAT_EXTENSION) == false) {
+			updateStatus(Messages.getString("NewPIWizardPageSampleFile.dat.file.extension.must.be.dat")); //$NON-NLS-1$
+			return;
+		}
+	}
+
+
+	if (!(new File(sampleFileText.getText()).exists())) {
+		updateStatus(Messages.getString("NewPIWizardPageSampleFile.dat.file.name.does.not.exist")); //$NON-NLS-1$
+		return;
+	}
+	if (!(new File(sampleFileText.getText()).isFile())) {
+		updateStatus(Messages.getString("NewPIWizardPageSampleFile.dat.must.be.a.file")); //$NON-NLS-1$
+		return;		
+	}
+
+	updateStatus(null);
+}
+
+private void updateStatus(String message) {
+	// need to enable finish, setPageComplete eventually check global states
+	writePageDataToNewPIWizardSettings();
+	setErrorMessage(message);
+	setPageComplete(message == null);
+}
+	
+private void handleBrowse() {
+	FileDialog dialog = new FileDialog(getShell());
+	String[] datExtensions = {"*.dat", //$NON-NLS-1$
+//								"*.base64",
+								"*.*"}; //$NON-NLS-1$
+	String[] datNames = {Messages.getString("NewPIWizardPageSampleFile.sample.filter.name"), //$NON-NLS-1$
+//							"Profiler Sample Files (*.base64)",
+							Messages.getString("NewPIWizardPageSampleFile.all.filter.name")}; //$NON-NLS-1$
+	dialog.setFilterExtensions(datExtensions);
+	dialog.setFilterNames(datNames);
+	// Try guiding user to path user is trying to fill
+	File clueFile = new File(sampleFileText.getText());
+	String cluePath = null;
+	if (clueFile.isDirectory()) {
+		cluePath = clueFile.getAbsolutePath();
+	} else {
+		cluePath = clueFile.getParent();
+	}
+	if (cluePath != null) {
+		dialog.setFilterPath(cluePath);
+	}
+	String filePath = dialog.open();
+
+	if (filePath != null) {
+		if (filePath.length() > 0) {
+			sampleFileText.setText(filePath);
+		}
+	}		
+}
+
+public void writePageDataToNewPIWizardSettings() {
+}
+
+public void setupPageFromFromNewPIWizardSettings() {
+}
+}
+