/** * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ /* * Author: atotic * Author: fabioz * Created: Aug 20, 2003 */ package org.python.pydev.debug.ui; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.ui.AbstractLaunchConfigurationTab; import org.eclipse.debug.ui.ILaunchConfigurationDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.python.pydev.debug.core.Constants; import org.python.pydev.debug.core.PydevDebugPlugin; import org.python.pydev.debug.ui.blocks.ProgramArgumentsBlock; import org.python.pydev.debug.ui.blocks.VMArgumentsBlock; import org.python.pydev.debug.ui.blocks.WorkingDirectoryBlock; /** * The main Python debug setup tab. * * This tab contains: * <ul> * <li>The program arguments block</li> * <li>The VM Arguments block</li> * <li>The Working directory block</li> * </ul> */ public class ArgumentsTab extends AbstractLaunchConfigurationTab { // Widget blocks private AbstractLaunchConfigurationTab workingDirectoryBlock; private AbstractLaunchConfigurationTab vmArgumentsBlock; private AbstractLaunchConfigurationTab programArgumentsBlock; public ArgumentsTab(MainModuleTab mainModuleTab) { programArgumentsBlock = createProgramArgumentsBlock(mainModuleTab); vmArgumentsBlock = createVmArgumentsBlock(mainModuleTab); workingDirectoryBlock = createWorkingDirectoryBlock(mainModuleTab); } protected AbstractLaunchConfigurationTab createWorkingDirectoryBlock(MainModuleTab mainModuleTab) { return new WorkingDirectoryBlock(mainModuleTab); } protected AbstractLaunchConfigurationTab createVmArgumentsBlock(MainModuleTab mainModuleTab) { return new VMArgumentsBlock(); } protected AbstractLaunchConfigurationTab createProgramArgumentsBlock(MainModuleTab mainModuleTab) { return new ProgramArgumentsBlock(); } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(Composite) */ public void createControl(Composite parent) { Composite comp = new Composite(parent, SWT.NONE); setControl(comp); GridLayout gridLayout = new GridLayout(); comp.setLayout(gridLayout); programArgumentsBlock.createControl(comp); vmArgumentsBlock.createControl(comp); workingDirectoryBlock.createControl(comp); } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#isValid(org.eclipse.debug.core.ILaunchConfiguration) */ public boolean isValid(ILaunchConfiguration launchConfig) { setErrorMessage(null); setMessage(null); if (!programArgumentsBlock.isValid(launchConfig)) { return false; } if (!vmArgumentsBlock.isValid(launchConfig)) { return false; } if (!workingDirectoryBlock.isValid(launchConfig)) { return false; } return true; } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getName() */ public String getName() { return "Arguments"; } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getImage() */ public Image getImage() { return PydevDebugPlugin.getImageCache().get(Constants.ARGUMENTS_ICON); } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy) */ public void setDefaults(ILaunchConfigurationWorkingCopy arg0) { // No defaults to set } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#initializeFrom(org.eclipse.debug.core.ILaunchConfiguration) */ public void initializeFrom(ILaunchConfiguration configuration) { programArgumentsBlock.initializeFrom(configuration); vmArgumentsBlock.initializeFrom(configuration); workingDirectoryBlock.initializeFrom(configuration); } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#performApply(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy) */ public void performApply(ILaunchConfigurationWorkingCopy configuration) { programArgumentsBlock.performApply(configuration); vmArgumentsBlock.performApply(configuration); workingDirectoryBlock.performApply(configuration); } /* (non-Javadoc) * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setLaunchConfigurationDialog(ILaunchConfigurationDialog) */ public void setLaunchConfigurationDialog(ILaunchConfigurationDialog dialog) { super.setLaunchConfigurationDialog(dialog); programArgumentsBlock.setLaunchConfigurationDialog(dialog); workingDirectoryBlock.setLaunchConfigurationDialog(dialog); vmArgumentsBlock.setLaunchConfigurationDialog(dialog); } /* * (non-Javadoc) * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getErrorMessage() */ @Override public String getErrorMessage() { String result = super.getErrorMessage(); if (result == null) { result = programArgumentsBlock.getErrorMessage(); } if (result == null) { result = workingDirectoryBlock.getErrorMessage(); } if (result == null) { result = vmArgumentsBlock.getErrorMessage(); } return result; } /* * (non-Javadoc) * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getMessage() */ @Override public String getMessage() { String result = super.getMessage(); if (result == null) { result = programArgumentsBlock.getMessage(); } if (result == null) { result = workingDirectoryBlock.getMessage(); } if (result == null) { result = vmArgumentsBlock.getMessage(); } return result; } }