/*******************************************************************************
* 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;
import java.util.Properties;
import org.eclipse.jface.dialogs.*;
import org.jboss.tools.common.model.ui.action.CommandBar;
import org.jboss.tools.common.model.ui.action.CommandBarListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.jboss.tools.common.meta.help.HelpUtil;
import org.jboss.tools.common.meta.key.WizardKeys;
import org.jboss.tools.common.model.XModel;
import org.jboss.tools.common.model.ui.*;
public abstract class AbstractQueryWizardView implements CommandBarListener {
public static String CANCEL = ModelUIMessages.AbstractQueryWizardView_Cancel;
public static String CLOSE = ModelUIMessages.AbstractQueryWizardView_Close;
public static String OK = ModelUIMessages.AbstractQueryWizardView_OK;
public static String HELP = ModelUIMessages.AbstractQueryWizardView_Help;
private String helpkey = null;
private Dialog dialog;
private TitleAreaDialog titleDialog = null;
private int code = 1;
protected CommandBar commandBar = new CommandBar();
protected XModel model;
protected String windowTitle;
private String title = ""; //$NON-NLS-1$
private String message;
private String errorMessage;
private Image titleImage;
public AbstractQueryWizardView() {}
public void setModel(XModel model) {
this.model = model;
}
public CommandBar getCommandBar() {
return commandBar;
}
public String[] getCommands() {
return new String[]{OK, CANCEL};
}
public String getDefaultCommand() {
return OK;
}
public abstract Control createControl(Composite parent);
public void setObject(Object object) {
Properties p = findProperties(object);
if(p != null) {
String key = p.getProperty("help"); //$NON-NLS-1$
setHelpKey(key);
windowTitle = WizardKeys.getHeader(key);
title = WizardKeys.getTitle(key);
if(title == null) title = p.getProperty("title", ""); //$NON-NLS-1$ //$NON-NLS-2$
}
}
protected Properties findProperties(Object o) {
if(o instanceof Properties) return (Properties)o;
if(!(o instanceof Object[])) return null;
Object[] os = (Object[])o;
for (int i = 0; i < os.length; i++)
if(os[i] instanceof Properties) return (Properties)os[i];
return null;
}
public void dispose() {
if (titleDialog!=null) titleDialog.close();
titleDialog = null;
if (dialog!=null) dialog.close();
dialog = null;
if (commandBar!=null) commandBar.dispose();
commandBar = null;
}
public void stopEditing() {}
public void action(String command) {
stopEditing();
if(CANCEL.equals(command)) {
code = 1;
dispose();
} else if(OK.equalsIgnoreCase(command)) {
code = 0;
dispose();
} else if(HELP.equals(command)) {
HelpUtil.helpEclipse(model, helpkey);
}
}
public int code() {
return code;
}
public void exception(Exception e) {
ModelUIPlugin.getPluginLog().logError(e);
}
public void setHelpKey(String key) {
helpkey = key;
}
public String getHelpKey() {
return helpkey;
}
public void setErrorMessage(String string) {
errorMessage = string;
if (titleDialog != null) {
titleDialog.setErrorMessage(errorMessage);
}
}
public void setMessage(String string) {
message = string;
if (titleDialog != null) {
titleDialog.setMessage(message);
}
}
public void setTitle(String string) {
title = string;
if ((title!=null)&&(titleDialog!=null)) {
titleDialog.setTitle(title);
}
}
public void setWindowTitle(String string) {
windowTitle = string;
if ((windowTitle!=null)&&(dialog!=null)) {
dialog.getShell().setText(windowTitle);
}
}
public void setTitleImage(Image image) {
titleImage = image;
if(titleImage == null){
titleImage = ModelUIImages.getImage(ModelUIImages.WIZARD_DEFAULT);
}
if (titleDialog!=null) {
titleDialog.setTitleImage(titleImage);
}
}
/*
public AbstractQueryDialog getDialog() {
return dialog;
}
*/
public void setDialog(Dialog d) {
dialog = d;
titleDialog = (dialog instanceof TitleAreaDialog) ? (TitleAreaDialog)dialog : null;
code = 1;
if (windowTitle!=null) {
dialog.getShell().setText(windowTitle);
}
if(titleDialog != null) {
if (title!=null) {
titleDialog.setTitle(title);
}
if (message!=null) {
titleDialog.setMessage(message);
}
if (errorMessage!=null) {
titleDialog.setErrorMessage(errorMessage);
}
if (titleImage!=null) {
titleDialog.setTitleImage(titleImage);
}
}
}
public Point getPreferredSize() {
return null;
}
public void setCode(int code) {
this.code = code;
}
public void updateBar() {
}
}