/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.ui.wizards.query.list;
import java.util.Properties;
import org.jboss.tools.common.model.ui.action.CommandBar;
import org.jboss.tools.common.model.ui.wizards.query.AbstractQueryWizardView;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
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;
public abstract class AbstractListWizardView extends AbstractQueryWizardView {
protected CommandBar allBar = new CommandBar();
protected Button[] boxes = new Button[0];
protected String[][] vs = new String[0][];
public AbstractListWizardView() {
createAllBar();
}
public void dispose() {
super.dispose();
if (allBar!=null) allBar.dispose();
allBar = null;
}
protected abstract String[] getActions();
protected void createAllBar() {
allBar.getLayout().direction = SWT.VERTICAL;
allBar.setCommands(getActions());
allBar.addCommandBarListener(this);
}
public void setObject(Object data) {
super.setObject(data);
Properties p = (Properties)data;
vs = (String[][])p.get("data"); //$NON-NLS-1$
boxes = new Button[vs.length];
}
public Control createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
layout.horizontalSpacing = 10;
layout.marginHeight = 10;
layout.verticalSpacing = 10;
layout.marginWidth = 10;
composite.setLayout(layout);
GridData gd = new GridData(GridData.FILL_BOTH);
composite.setLayoutData(gd);
ScrolledComposite sp = new ScrolledComposite(composite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
sp.setLayout(new GridLayout());
Composite c = new Composite(sp, SWT.NONE);
c.setLayoutData(new GridData(GridData.FILL_BOTH));
sp.setContent(c);
c.setLayout(new GridLayout());
for (int i = 0; i < vs.length; i++) {
boxes[i] = new Button(c, SWT.CHECK);
boxes[i].setText(vs[i][0]);
boxes[i].setSelection(!"yes".equals(vs[i][1])); //$NON-NLS-1$
boxes[i].addSelectionListener(new AL(i));
}
c.pack();
c.layout();
Control bc = allBar.createControl(composite);
bc.setLayoutData(new GridData(GridData.FILL_VERTICAL));
return sp;
}
public void action(String command) {
if(CANCEL.equals(command) ||
OK.equals(command) ||
HELP.equals(command)) {
super.action(command);
} else {
stopEditing();
internalAction(command);
}
}
protected abstract void internalAction(String command);
class AL extends SelectionAdapter {
int i;
public AL(int i) {
this.i = i;
}
public void widgetSelected(SelectionEvent e) {
apply(i);
}
}
protected void apply(int i) {
vs[i][1] = (boxes[i].getSelection()) ? "no" : "yes"; //$NON-NLS-1$ //$NON-NLS-2$
}
}