/*******************************************************************************
* Copyright (c) 2007, 2009 Intel 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:
* Intel Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.ui.newui;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
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.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.internal.ui.newui.Messages;
/**
* @noextend This class is not intended to be subclassed by clients.
*/
public class EnvDialog extends Dialog {
IEnvironmentVariable var;
Button b_add2all;
private Text text1;
private Text text2;
private boolean newAction;
private boolean multiCfg;
private ICConfigurationDescription cfgd;
public String t1 = AbstractCPropertyTab.EMPTY_STR;
public String t2 = AbstractCPropertyTab.EMPTY_STR;
public boolean toAll = false;
private String title;
public EnvDialog(Shell parent,
IEnvironmentVariable _var,
String _title,
boolean _newAction,
boolean _multiCfg,
ICConfigurationDescription _cfgd) {
super(parent);
var = _var;
newAction = _newAction;
multiCfg = _multiCfg;
cfgd = _cfgd;
title = _title;
}
/**
* Method is overridden to disable "OK" button at start
*/
@Override
protected Control createContents(Composite parent) {
Control out = super.createContents(parent);
setButtons();
return out;
}
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(title);
}
@Override
protected Control createDialogArea(Composite c) {
c.setLayout(new GridLayout(3, false));
GridData gd;
Label l1 = new Label(c, SWT.NONE);
l1.setText(Messages.EnvDialog_0);
l1.setLayoutData(new GridData(GridData.BEGINNING));
text1 = new Text(c, SWT.SINGLE | SWT.BORDER);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
gd.widthHint = 400;
text1.setLayoutData(gd);
text1.addModifyListener(new ModifyListener () {
public void modifyText(ModifyEvent e) { setButtons(); }});
Label l2 = new Label(c, SWT.NONE);
l2.setText(Messages.EnvDialog_1);
l2.setLayoutData(new GridData(GridData.BEGINNING));
text2 = new Text(c, SWT.SINGLE | SWT.BORDER);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = 250;
text2.setLayoutData(gd);
text2.addModifyListener(new ModifyListener () {
public void modifyText(ModifyEvent e) { setButtons(); }});
final Button b = new Button(c, SWT.PUSH);
b.setText(Messages.EnvDialog_2);
b.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String x = AbstractCPropertyTab.getVariableDialog(b.getShell(), cfgd);
if (x != null) {
text2.insert(x);
setButtons();
}
}});
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = AbstractCPropertyTab.BUTTON_WIDTH;
b.setLayoutData(gd);
b_add2all = new Button(c, SWT.CHECK);
b_add2all.setText(Messages.EnvDialog_3);
gd = new GridData(GridData.FILL_HORIZONTAL);
if (cfgd == null)
b_add2all.setVisible(false);
else
b_add2all.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
toAll = b_add2all.getSelection();
}});
if (multiCfg)
b_add2all.setVisible(false);
if (!newAction) {
gd.heightHint = 1;
b_add2all.setVisible(false);
text1.setText(var.getName());
text1.setEnabled(false); // don't change name
String s = var.getValue();
text2.setText(s == null ? AbstractCPropertyTab.EMPTY_STR : s);
}
gd.horizontalSpan = 3;
b_add2all.setLayoutData(gd);
setButtons();
return c;
}
private void setButtons() {
t1 = text1.getText();
t2 = text2.getText();
Button b = getButton(IDialogConstants.OK_ID);
if (b != null)
b.setEnabled(t1.trim().length() > 0);
}
}