/******************************************************************************* * Copyright (c) 2005, 2012 QNX Software Systems 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: * QNX Software Systems - Initial API and implementation * IBM Corporation * Bruno Medeiros - lang modifications *******************************************************************************/ package melnorme.lang.ide.ui.launch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.ui.ILaunchConfigurationDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import melnorme.lang.ide.launching.LaunchConstants; import melnorme.lang.ide.ui.LangImages; import melnorme.lang.ide.ui.LangUIMessages; import melnorme.utilbox.status.StatusException; //BM: Original based on org.eclipse.cdt.launch.ui.CArgumentsTab /** * A launch configuration tab that displays and edits program arguments, * and working directory launch configuration attributes. * <p> * This class may be instantiated. This class is not intended to be subclassed. * </p> */ public class LangArgumentsTab extends AbstractLaunchConfigurationTabExt { protected final LangArgumentsBlock2 argumentsBlock = new LangArgumentsBlock2(); protected final LangWorkingDirectoryBlock workingDirectoryBlock = new LangWorkingDirectoryBlock(); public LangArgumentsTab() { argumentsBlock.addChangeListener(this::updateLaunchConfigurationDialog); } /* ----------------- Control creation ----------------- */ @Override public String getName() { return LangUIMessages.LangArgumentsTab_Arguments; } @Override public Image getImage() { return LangImages.IMG_LAUNCHTAB_ARGUMENTS.getImage(); } @Override public void setLaunchConfigurationDialog(ILaunchConfigurationDialog dialog) { super.setLaunchConfigurationDialog(dialog); workingDirectoryBlock.setLaunchConfigurationDialog(dialog); } @Override public void createControl(Composite parent) { Composite comp = new Composite(parent, SWT.NONE); setControl(comp); GridLayout layout = new GridLayout(1, true); comp.setLayout(layout); comp.setFont(parent.getFont()); GridData gd = new GridData(GridData.FILL_BOTH); comp.setLayoutData(gd); setHelpContextId(); argumentsBlock.createComponent(comp, new GridData(GridData.FILL_BOTH)); workingDirectoryBlock.createControl(comp); } protected void setHelpContextId() { // PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), // ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_ARGUMNETS_TAB); } /* ---------- validation ---------- */ @Override public boolean isValid(ILaunchConfiguration config) { if(!workingDirectoryBlock.isValid(config)) { setErrorMessage(workingDirectoryBlock.getErrorMessage()); setMessage(workingDirectoryBlock.getMessage()); return false; } return super.isValid(config); } @Override protected void doValidate() throws StatusException { } /* ----------------- Bindings (Apply/Revert) ----------------- */ @Override public void setDefaults(ILaunchConfigurationWorkingCopy config) { config.setAttribute(LaunchConstants.ATTR_PROGRAM_ARGUMENTS, ""); workingDirectoryBlock.setDefaults(config); } @Override public void initializeFrom(ILaunchConfiguration configuration) { argumentsBlock.setFieldValue(getConfigAttribute(configuration, LaunchConstants.ATTR_PROGRAM_ARGUMENTS, "")); workingDirectoryBlock.initializeFrom(configuration); } @Override public void performApply(ILaunchConfigurationWorkingCopy configuration) { configuration.setAttribute(LaunchConstants.ATTR_PROGRAM_ARGUMENTS, argumentsBlock.getFieldValue()); workingDirectoryBlock.performApply(configuration); } }