|
What this is
Other links
The source code/******************************************************************************* * Copyright (c) 2005, 2008 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.pde.internal.ui.launcher; import java.io.File; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.core.variables.IStringVariableManager; import org.eclipse.core.variables.VariablesPlugin; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.jface.window.Window; import org.eclipse.pde.internal.ui.PDEPlugin; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.pde.internal.ui.util.FileNameFilter; import org.eclipse.pde.ui.launcher.AbstractLauncherTab; import org.eclipse.pde.ui.launcher.IPDELauncherConstants; 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.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; import org.eclipse.ui.dialogs.ISelectionStatusValidator; import org.eclipse.ui.model.WorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; public class ConfigurationTemplateBlock extends BaseBlock { private Button fGenerateFileButton; private Button fUseTemplateButton; public ConfigurationTemplateBlock(AbstractLauncherTab tab) { super(tab); } public void createControl(Composite parent) { Group group = new Group(parent, SWT.NONE); group.setText(PDEUIMessages.ConfigurationTab_configFileGroup); group.setLayout(new GridLayout(2, false)); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); fGenerateFileButton = new Button(group, SWT.RADIO); fGenerateFileButton.setText(PDEUIMessages.ConfigurationTab_defaultConfigIni); GridData gd = new GridData(); gd.horizontalSpan = 2; fGenerateFileButton.setLayoutData(gd); fGenerateFileButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { enableBrowseSection(!fGenerateFileButton.getSelection()); boolean generateConfig = fGenerateFileButton.getSelection(); fLocationText.setEditable(!generateConfig); if (generateConfig) fLocationText.setEnabled(true); } }); fUseTemplateButton = new Button(group, SWT.RADIO); fUseTemplateButton.setText(PDEUIMessages.ConfigurationTab_existingConfigIni); gd = new GridData(); gd.horizontalSpan = 2; fUseTemplateButton.setLayoutData(gd); createText(group, PDEUIMessages.ConfigurationTab_templateLoc, 20); Composite buttons = new Composite(group, SWT.NONE); GridLayout layout = new GridLayout(4, false); layout.marginHeight = layout.marginWidth = 0; buttons.setLayout(layout); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 2; buttons.setLayoutData(gd); Label label = new Label(buttons, SWT.NONE); label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); createButtons(buttons, new String[] {PDEUIMessages.BaseBlock_workspaceS, PDEUIMessages.BaseBlock_filesystemS, PDEUIMessages.BaseBlock_variablesS}); } public void initializeFrom(ILaunchConfiguration configuration) throws CoreException { boolean generateDefault = configuration.getAttribute(IPDELauncherConstants.CONFIG_GENERATE_DEFAULT, true); fGenerateFileButton.setSelection(generateDefault); fUseTemplateButton.setSelection(!generateDefault); enableBrowseSection(!generateDefault); fLocationText.setEditable(!generateDefault); if (generateDefault) fLocationText.setEnabled(true); fLocationText.setText(configuration.getAttribute(IPDELauncherConstants.CONFIG_TEMPLATE_LOCATION, "")); //$NON-NLS-1$ } public void performApply(ILaunchConfigurationWorkingCopy configuration) { configuration.setAttribute(IPDELauncherConstants.CONFIG_GENERATE_DEFAULT, fGenerateFileButton.getSelection()); if (!fGenerateFileButton.getSelection()) configuration.setAttribute(IPDELauncherConstants.CONFIG_TEMPLATE_LOCATION, fLocationText.getText().trim()); } public void setDefaults(ILaunchConfigurationWorkingCopy configuration) { configuration.setAttribute(IPDELauncherConstants.CONFIG_GENERATE_DEFAULT, true); configuration.setAttribute(IPDELauncherConstants.CONFIG_TEMPLATE_LOCATION, "${target_home}" + File.separatorChar + "configuration" + File.separatorChar + "config.ini"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } protected String getName() { return PDEUIMessages.ConfigurationTemplateBlock_name; } protected boolean isFile() { return true; } protected void handleBrowseWorkspace() { ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(fTab.getControl().getShell(), new WorkbenchLabelProvider(), new WorkbenchContentProvider()); IFile file = getFile(); if (file != null) dialog.setInitialSelection(file); dialog.setInput(PDEPlugin.getWorkspace().getRoot()); dialog.addFilter(new FileNameFilter("config.ini")); //$NON-NLS-1$ dialog.setAllowMultiple(false); dialog.setTitle(PDEUIMessages.ConfigurationTab_fileSelection); dialog.setMessage(PDEUIMessages.ConfigurationTab_fileDialogMessage); dialog.setValidator(new ISelectionStatusValidator() { public IStatus validate(Object[] selection) { if (selection.length > 0 && selection[0] instanceof IFile) return new Status(IStatus.OK, PDEPlugin.getPluginId(), IStatus.OK, "", null); //$NON-NLS-1$ return new Status(IStatus.ERROR, PDEPlugin.getPluginId(), IStatus.ERROR, "", null); //$NON-NLS-1$ } }); if (dialog.open() == Window.OK) { file = (IFile) dialog.getFirstResult(); fLocationText.setText("${workspace_loc:" + file.getFullPath().makeRelative() + "}"); //$NON-NLS-1$ //$NON-NLS-2$ } } protected IFile getFile() { String path = getLocation(); if (path.length() > 0) { IResource res = null; IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); if (path.startsWith("${workspace_loc:")) { //$NON-NLS-1$ IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager(); try { path = manager.performStringSubstitution(path, false); IFile[] containers = root.findFilesForLocation(new Path(path)); if (containers.length > 0) res = containers[0]; } catch (CoreException e) { } } else { res = root.findMember(path); } if (res instanceof IFile) { return (IFile) res; } } return null; } protected void handleBrowseFileSystem() { FileDialog dialog = new FileDialog(fTab.getControl().getShell()); dialog.setFilterExtensions(new String[] {"*.ini"}); //$NON-NLS-1$ dialog.setFilterPath(getLocation()); dialog.setText(PDEUIMessages.ConfigurationTab_configLocMessage); String res = dialog.open(); if (res != null) fLocationText.setText(res); } protected String getLocation() { String path = fLocationText.getText().trim(); IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager(); try { return manager.performStringSubstitution(path, false); } catch (CoreException e) { return path; } } public String validate() { if (fGenerateFileButton.getSelection()) return null; return super.validate(); } } |
... this post is sponsored by my books ... | |
![]() #1 New Release! |
![]() FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.