diff -r 000000000000 -r 522a326673b6 sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/smtwidgets/ModelLabelsWidget.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/smtwidgets/ModelLabelsWidget.java Thu Mar 11 19:08:43 2010 +0200 @@ -0,0 +1,449 @@ +// Copyright (c) 2008-2009 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: +// ${file_name} +// +// + +package com.symbian.smt.gui.smtwidgets; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import com.symbian.smt.gui.Helper; +import com.symbian.smt.gui.PersistentDataStore; +import com.symbian.smt.gui.smtwidgets.ValidModelEvent.Type; + +public class ModelLabelsWidget extends Composite implements + ValidModelObservable { + private Combo distributionTextCombo; + private Text modelVersionText; + private Text systemVersionText; + private Text copyrightTextText; + private Combo modelVersionTextCombo; + private Text modelNameText; + private Text systemNameText; + private ArrayList listeners = new ArrayList(); + + /** + * Creates a ModelLabelsWidget composite object + * + * @return void + */ + public ModelLabelsWidget(final Composite parent, int style) { + super(parent, style); + + this.setLayout(new FillLayout()); + + final Composite gridLayoutComposite = new Composite(this, SWT.NONE); + final GridLayout gridLayout = new GridLayout(); + gridLayout.numColumns = 4; + gridLayoutComposite.setLayout(gridLayout); + + final Label systemNameLabel = new Label(gridLayoutComposite, SWT.NONE); + systemNameLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, + false)); + systemNameLabel.setText("System Name"); + + systemNameText = new Text(gridLayoutComposite, SWT.BORDER); + systemNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, + false)); + + final Label systemVersionLabel = new Label(gridLayoutComposite, + SWT.NONE); + systemVersionLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + false, false)); + systemVersionLabel.setText("System Version"); + + systemVersionText = new Text(gridLayoutComposite, SWT.BORDER); + systemVersionText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + true, false)); + + final Label modelNameLabel = new Label(gridLayoutComposite, SWT.NONE); + modelNameLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, + false)); + modelNameLabel.setText("Model Name"); + + modelNameText = new Text(gridLayoutComposite, SWT.BORDER); + modelNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, + false)); + + final Label modelVersionLabel = new Label(gridLayoutComposite, SWT.NONE); + modelVersionLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + false, false)); + modelVersionLabel.setText("Model Version"); + + modelVersionText = new Text(gridLayoutComposite, SWT.BORDER); + modelVersionText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, + false)); + + final Label modelVersionTextLabel = new Label(gridLayoutComposite, + SWT.NONE); + modelVersionTextLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + false, false)); + modelVersionTextLabel.setText("Model Version Text"); + + modelVersionTextCombo = new Combo(gridLayoutComposite, SWT.NONE); + modelVersionTextCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + true, false)); + + final Label distributionTextLabel = new Label(gridLayoutComposite, + SWT.NONE); + distributionTextLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, + false, false)); + distributionTextLabel.setText("Distribution Text"); + + distributionTextCombo = new Combo(gridLayoutComposite, SWT.NONE); + distributionTextCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + true, false)); + + final Label copyrightTextLabel = new Label(gridLayoutComposite, + SWT.NONE); + copyrightTextLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + false, false)); + copyrightTextLabel.setText("Copyright Text"); + + copyrightTextText = new Text(gridLayoutComposite, SWT.BORDER); + copyrightTextText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, + true, false)); + } + + /** + * @see com.symbian.smt.gui.smtwidgets.ValidModelObservable#addModelListener(ValidModelDefinedListener) + */ + public void addModelListener(ValidModelDefinedListener listener) { + synchronized (listeners) { + listeners.add(listener); + } + } + + private void checkDistributionText() { + if (listeners.size() > 0) { + Boolean modelDefined = true; + String message = ""; + Type type = Type.SUCCESS; + + String text = distributionTextCombo.getText().trim(); + + if (text.length() > 0) { + // TODO:BRS:Specify any validation here, such as what to do with + // the empty string + // if (xxx) { + // modelDefined = false; + // message = + // ""; + // type = Type.ERROR; + // } + } + + ValidModelEvent event = new ValidModelEvent(modelDefined, message, + type); + + for (ValidModelDefinedListener listener : listeners) { + listener.validModelDefined(event); + } + } + } + + private void checkModelVersionText() { + if (listeners.size() > 0) { + Boolean modelDefined = true; + String message = ""; + Type type = Type.SUCCESS; + + String text = modelVersionTextCombo.getText().trim(); + + if (text.length() > 0) { + // TODO:BRS:Specify any validation here, such as what to do with + // the empty string + // if (xxx) { + // modelDefined = false; + // message = + // ""; + // type = Type.ERROR; + // } + } + + ValidModelEvent event = new ValidModelEvent(modelDefined, message, + type); + + for (ValidModelDefinedListener listener : listeners) { + listener.validModelDefined(event); + } + } + } + + /** + * Returns the copyright text + * + * @return String + */ + public String getCopyrightText() { + return copyrightTextText.getText(); + } + + /** + * Returns the distribution text values + * + * @return String[] + */ + public String[] getDistributionTexts() { + List items = Helper.toListOfStrings(distributionTextCombo + .getItems()); + String text = distributionTextCombo.getText().trim(); + + if (text.length() > 0) { + if (!items.contains(text)) { + items.add(0, text); + } + } + + return items.toArray(new String[items.size()]); + } + + /** + * Returns the model name + * + * @return String + */ + public String getModelName() { + return modelNameText.getText(); + } + + /** + * Returns the text for the model version + * + * @return String + */ + public String getModelVersion() { + return modelVersionText.getText(); + } + + /** + * Returns the model version text values + * + * @return String[] + */ + public String[] getModelVersionTexts() { + List items = Helper.toListOfStrings(modelVersionTextCombo + .getItems()); + String text = modelVersionTextCombo.getText().trim(); + + if (text.length() > 0) { + if (!items.contains(text)) { + items.add(0, text); + } + } + + return items.toArray(new String[items.size()]); + } + + /** + * Returns the selected distribution text value + * + * @return String + */ + public String getSelectedDistributionText() { + return distributionTextCombo.getText(); + } + + /** + * Returns the selected model version text value + * + * @return String + */ + public String getSelectedModelVersionText() { + return modelVersionTextCombo.getText(); + } + + /** + * Returns the system name + * + * @return String + */ + public String getSystemName() { + return systemNameText.getText(); + } + + /** + * Returns the text for the system version + * + * @return String + */ + public String getSystemVersion() { + return systemVersionText.getText(); + } + + public void initialiseDistributionText(PersistentDataStore store) { + distributionTextCombo.setItems(store.getDistributionTexts()); + distributionTextCombo.setText(store.getSelectedDistributionText()); + + distributionTextCombo.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + checkDistributionText(); + } + }); + } + + public void initialiseModelVersionText(PersistentDataStore store) { + modelVersionTextCombo.setItems(store.getModelVersionTexts()); + modelVersionTextCombo.setText(store.getSelectedModelVersionText()); + + modelVersionTextCombo.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + checkModelVersionText(); + } + }); + } + + /** + * @see com.symbian.smt.gui.smtwidgets.ValidModelObservable#removeModelListener(ValidModelDefinedListener) + */ + public void removeModelListener(ValidModelDefinedListener listener) { + synchronized (listeners) { + listeners.remove(listener); + } + } + + /** + * Sets the text for the copyright text + * + * @param copyrightText + * String to be used for the copyright text + * @return void + */ + public void setCopyrightText(String copyrightText) { + copyrightTextText.setText(copyrightText); + } + + /** + * Sets the values for the distribution text combo + * + * @param distributionText + * String array to be used for the distribution text values + * @return void + */ + public void setDistributionTexts(String[] distributionTexts) { + distributionTextCombo.setItems(distributionTexts); + } + + /** + * Sets the text for the model name + * + * @param modelName + * String to be used for the model name + * @return void + */ + public void setModelName(String modelName) { + modelNameText.setText(modelName); + } + + /** + * Sets the text for the model version + * + * @param modelVersion + * String to be used for the model version + * @return void + */ + public void setModelVersion(String modelVersion) { + modelVersionText.setText(modelVersion); + } + + /** + * Sets the items for the model version text combo + * + * @param modelVersionTexts + * values of the model version text + * @return void + */ + public void setModelVersionTexts(String[] modelVersionTexts) { + modelVersionTextCombo.setItems(modelVersionTexts); + } + + /** + * Sets the selected distribution text value + * + * @param distributionText + * The distribution text value to set as selected. + * @return void + */ + public void setSelectedDistributionText(String distributionText) { + String[] items = distributionTextCombo.getItems(); + int index = 0; + + for (String item : items) { + if (item.equals(distributionText)) { + break; + } + + index++; + } + + distributionTextCombo.select(index); + } + + /** + * Sets the selected model version text value + * + * @param modelVersionText + * The model version text value to set as selected. + * @return void + */ + public void setSelectedModelVersionText(String modelVersionText) { + String[] items = modelVersionTextCombo.getItems(); + int index = 0; + + for (String item : items) { + if (item.equals(modelVersionText)) { + break; + } + + index++; + } + + modelVersionTextCombo.select(index); + } + + /** + * Sets the text for the system name + * + * @param systemName + * String to be used for the system name + * @return void + */ + public void setSystemName(String systemName) { + systemNameText.setText(systemName); + } + + /** + * Sets the text for the system version + * + * @param systemVersion + * String to be used for the system version + * @return void + */ + public void setSystemVersion(String systemVersion) { + systemVersionText.setText(systemVersion); + } +}