/******************************************************************************* * Copyright (c) 2015 ARM Ltd. and others * 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: * ARM Ltd and ARM Germany GmbH - Initial API and implementation *******************************************************************************/ package com.arm.cmsis.pack.ui.wizards; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.widgets.Composite; import com.arm.cmsis.pack.info.ICpDeviceInfo; import com.arm.cmsis.pack.rte.devices.IRteDeviceItem; import com.arm.cmsis.pack.ui.CpPlugInUI; import com.arm.cmsis.pack.ui.CpStringsUI; import com.arm.cmsis.pack.ui.IStatusMessageListener; import com.arm.cmsis.pack.ui.widgets.RteDeviceSelectorWidget; /** * Wizard page that wraps device selector widget */ public class RteDeviceSelectorPage extends WizardPage implements IStatusMessageListener { private RteDeviceSelectorWidget fDeviceWidget = null; private IRteDeviceItem fDevices = null; private ICpDeviceInfo fDeviceInfo = null; private boolean fbInitialized = false; public RteDeviceSelectorPage() { this(CpStringsUI.RteDeviceWizard_PageName, CpStringsUI.RteDeviceWizard_SelectDevice, CpPlugInUI.getImageDescriptor(CpPlugInUI.ICON_CHIP_48)); } /** * @param pageName * @param title * @param titleImage */ public RteDeviceSelectorPage(String pageName, String title, ImageDescriptor titleImage) { super(pageName, title, titleImage); setPageComplete(false); } @Override public void createControl(Composite parent) { fDeviceWidget = new RteDeviceSelectorWidget(parent); fDeviceWidget.addListener(this); fDeviceWidget.setDevices(fDevices); setControl(fDeviceWidget); updateStatus(CpStringsUI.RteDeviceSelectorPage_SelectDevice); } /** * Returns internal device tree * @return the devices */ public IRteDeviceItem getDevices() { return fDevices; } /** * Assigns device tree * @param devices the devices to set */ public void setDevices(IRteDeviceItem devices) { fDevices = devices; if(fDeviceWidget != null) { fDeviceWidget.setDevices(fDevices); } } @Override public void setVisible(boolean visible) { fDeviceWidget.setDeviceInfo(fDeviceInfo); fbInitialized = true; super.setVisible(visible); } @Override public void dispose() { super.dispose(); fDevices = null; fDeviceWidget = null; fDeviceInfo = null; } @Override public void handle(String message) { updateStatus(message); } protected void updateStatus(String message) { setErrorMessage(message); if (fbInitialized) { fDeviceInfo = fDeviceWidget.getDeviceInfo(); } setPageComplete(fDeviceInfo!= null); } /** * Returns selected device if any * @return the selected device */ public IRteDeviceItem getDevice() { if(fDeviceWidget != null) { return fDeviceWidget.getSelectedDeviceItem(); } return null; } /** * Returns selected device info * @return */ public ICpDeviceInfo getDeviceInfo() { if(fbInitialized ) { fDeviceInfo = fDeviceWidget.getDeviceInfo(); } return fDeviceInfo; } /** * Makes initial device selection * @param deviceInfo ICpDeviceInfo to make initial selection */ public void setDeviceInfo(ICpDeviceInfo deviceInfo) { fDeviceInfo = deviceInfo; if(fDeviceWidget != null) { fDeviceWidget.setDeviceInfo(deviceInfo); } } }