/*******************************************************************************
* Copyright (c) 2007, 2011 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.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.settings.model.ICResourceDescription;
import org.eclipse.cdt.internal.ui.newui.Messages;
/**
* @noextend This class is not intended to be subclassed by clients.
*/
public class SymbolDialog extends AbstractPropertyDialog {
private String data1;
private String data2;
private Button b_add2conf;
private Button b_add2lang;
private Text txt1;
private Text txt2;
private Button b_vars;
private Button b_ok;
private Button b_ko;
private boolean newAction;
private ICResourceDescription cfgd;
public SymbolDialog(Shell parent, boolean _newAction,
String title, String _data1, String _data2,
ICResourceDescription _cfgd) {
super(parent, title);
data1 = _data1;
data2 = _data2;
newAction = _newAction;
cfgd = _cfgd;
}
@Override
protected Control createDialogArea(Composite c) {
c.setLayout(new GridLayout(4, true));
GridData gd;
Label l1 = new Label(c, SWT.NONE);
l1.setText(Messages.SymbolDialog_0);
l1.setLayoutData(new GridData(GridData.BEGINNING));
txt1 = new Text(c, SWT.SINGLE | SWT.BORDER);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 3;
gd.widthHint = 300;
txt1.setLayoutData(gd);
txt1.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
setButtons();
}});
Label l2 = new Label(c, SWT.NONE);
l2.setText(Messages.SymbolDialog_1);
l2.setLayoutData(new GridData(GridData.BEGINNING));
txt2 = new Text(c, SWT.SINGLE | SWT.BORDER);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
gd.widthHint = 200;
txt2.setLayoutData(gd);
txt2.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
setButtons();
}});
b_vars = setupButton(c, AbstractCPropertyTab.VARIABLESBUTTON_NAME);
b_add2conf = new Button(c, SWT.CHECK);
b_add2conf.setText(Messages.IncludeDialog_2);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 4;
b_add2conf.setLayoutData(gd);
if (!newAction) {
b_add2conf.setVisible(false);
txt1.setEnabled(false); // don't change name
}
b_add2lang = new Button(c, SWT.CHECK);
b_add2lang.setText(Messages.IncludeDialog_3);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 4;
b_add2lang.setLayoutData(gd);
if (!newAction) {
b_add2lang.setVisible(false);
txt1.setEnabled(false); // don't change name
}
// add 2 placeholders
new Label(c, 0).setLayoutData(new GridData());
new Label(c, 0).setLayoutData(new GridData());
b_ok = setupButton(c, IDialogConstants.OK_LABEL);
b_ko = setupButton(c, IDialogConstants.CANCEL_LABEL);
c.getShell().setDefaultButton(b_ok);
c.pack();
// moved here to avoid accessing b_ok before it created.
txt1.setText(data1);
txt2.setText(data2);
setButtons();
return c;
}
private void setButtons() {
b_ok.setEnabled(txt1.getText().trim().length() > 0);
}
@Override
public void buttonPressed(SelectionEvent e) {
if (e.widget.equals(b_ok)) {
super.text1 = txt1.getText();
super.text2 = txt2.getText();
check1 = b_add2conf.getSelection();
check3 = b_add2lang.getSelection();
result = true;
shell.dispose();
} else if (e.widget.equals(b_ko)) {
shell.dispose();
} else if (e.widget.equals(b_vars)) {
String s = AbstractCPropertyTab.getVariableDialog(shell, cfgd.getConfiguration());
if (s != null) txt2.insert(s);
}
}
}