/******************************************************************************* * 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.editors; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; import com.arm.cmsis.pack.info.ICpDeviceInfo; import com.arm.cmsis.pack.rte.IRteModelController; import com.arm.cmsis.pack.ui.CpPlugInUI; import com.arm.cmsis.pack.ui.CpStringsUI; import com.arm.cmsis.pack.ui.IHelpContextIds; import com.arm.cmsis.pack.ui.widgets.RteDeviceInfoWidget; import com.arm.cmsis.pack.ui.wizards.RteDeviceSelectorWizard; import com.arm.cmsis.pack.ui.wizards.RteWizardDialog; /** * Editor page that wraps RteManagerWidget * */ public class RteDevicePage extends RteEditorPage { private RteDeviceInfoWidget deviceWidget = null; public RteDevicePage() { } @Override public void setModelController(IRteModelController model) { super.setModelController(model); deviceWidget.setModelController(model); update(); } @Override public Composite getFocusWidget() { return deviceWidget; } @Override public void createPageContent(Composite parent) { deviceWidget = new RteDeviceInfoWidget(parent); GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); deviceWidget.setLayoutData(gd); deviceWidget.setSelectionAdapter( new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { changeDevice(); } }); headerWidget.setFocusWidget(getFocusWidget()); PlatformUI.getWorkbench().getHelpSystem().setHelp(getFocusWidget(), IHelpContextIds.DEVICE_PAGE); } @Override protected void setupHeader() { headerWidget.setLabel(CpStringsUI.RteDevicePage_Device, CpPlugInUI.getImage(CpPlugInUI.ICON_DEVICE)); super.setupHeader(); } protected void changeDevice() { IRteModelController model = getModelController(); if(model != null){ RteDeviceSelectorWizard wizard = new RteDeviceSelectorWizard(CpStringsUI.RteDeviceSelectorPage_SelectDevice, model.getDevices(), model.getDeviceInfo()); RteWizardDialog dlg = new RteWizardDialog(deviceWidget.getShell(), wizard); dlg.setPageSize(600, 400); // limit initial size if(dlg.open() == Window.OK) { ICpDeviceInfo deviceInfo = wizard.getDeviceInfo(); //deviceWidget.setDeviceInfo(deviceInfo); model.setDeviceInfo(deviceInfo); } } } @Override public void update() { if (headerWidget != null && getModelController() != null) { bModified = getModelController().isDeviceModified(); headerWidget.setModified(bModified); } refresh(); super.update(); } @Override public void refresh() { IRteModelController modelController = getModelController(); if(deviceWidget!= null && modelController != null) { deviceWidget.setDeviceInfo(modelController.getDeviceInfo()); } } }