/**
SpagoBI, the Open Source Business Intelligence suite
Copyright (C) 2012 Engineering Ingegneria Informatica S.p.A. - SpagoBI Competency Center
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this file,
You can obtain one at http://mozilla.org/MPL/2.0/.
**/
package it.eng.spagobi.studio.documentcomposition.wizards.pages;
import it.eng.spagobi.studio.documentcomposition.Activator;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Document;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.DocumentComposition;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Parameter;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Parameters;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.Refresh;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.RefreshDocLinked;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.bo.ParameterBO;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.metadata.MetadataDocument;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.metadata.MetadataDocumentComposition;
import it.eng.spagobi.studio.documentcomposition.editors.model.documentcomposition.metadata.MetadataParameter;
import it.eng.spagobi.studio.documentcomposition.wizards.SpagoBIModifyNavigationWizard;
import it.eng.spagobi.studio.documentcomposition.wizards.pages.util.DestinationInfo;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;
public class ModifyNavigationWizardPage extends WizardPage{
Vector<Combo> destinationDocNameCombo;
Vector<Combo> destinationInputParam ;
Vector<Text> destinationInputParamDefaultValue ;
HashMap <String, String> docInfoUtil = new HashMap<String, String>();
HashMap <String, String> deletedParams = new HashMap<String, String>();
HashMap <String, String> deletedRefresh = new HashMap<String, String>();
String name = "";
String paramIn = "";
Vector<Button> deleteDestButtonVector = new Vector<Button>();
int destinCounter = -1;
private DestinationInfo destinationInfo;
private Vector<DestinationInfo> destinationInfos;
Text navigationNameText;
Text masterDocName;
Text masterParamName;
Text masterDefaultValueOutputParam;
private MetadataDocumentComposition metaDoc = Activator.getDefault().getMetadataDocumentComposition();
public ModifyNavigationWizardPage() {
super("Modify navigation");
setTitle("Modify Destination Document");
destinationInfos = new Vector<DestinationInfo>();
}
public ModifyNavigationWizardPage(String pageName) {
super(pageName);
setTitle("Modify Destination document");
destinationInfos = new Vector<DestinationInfo>();
}
@Override
public boolean isPageComplete() {
boolean ret= super.isPageComplete();
if(destinCounter != -1){
for(int i = 0; i<destinCounter; i++){
int sel = destinationDocNameCombo.elementAt(destinCounter).getSelectionIndex();
if(sel != -1){
String destin = destinationDocNameCombo.elementAt(destinCounter).getItem(sel);
if ((destinationInputParam.elementAt(destinCounter).getText() == null || destinationInputParam.elementAt(destinCounter).getText().length() == 0)
&&(sel ==-1 || destin == null )) {
return false;
}
}
}
}else{
ret = false;
}
return ret;
}
public void createControl(Composite parent) {
destinationInfo = new DestinationInfo();
destinationDocNameCombo = new Vector<Combo>();
destinationInputParam = new Vector<Combo>();
destinationInputParamDefaultValue = new Vector<Text>();
fillDocInfoUtil();
final ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL );
final Composite composite = new Composite(sc, SWT.NONE);
sc.setContent(composite);
final GridLayout gl = new GridLayout();
gl.numColumns = 1;
composite.setLayout(gl);
FillLayout layout = new FillLayout();
layout.type = SWT.VERTICAL;
composite.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
gd.grabExcessHorizontalSpace = true;
gd.minimumWidth =260;
gd.widthHint = 285;
//primo composite
Composite composite1 = new Composite(composite, SWT.NONE);
composite1.setLayout(gl);
final GridLayout glBlock = new GridLayout();
glBlock.numColumns = 3;
Composite singleBlock = new Composite(composite1, SWT.BORDER | SWT.FILL);
singleBlock.setLayout(glBlock);
new Label(singleBlock, SWT.NONE).setText("Navigation name: ");
navigationNameText = new Text(singleBlock, SWT.BORDER);
navigationNameText.setLayoutData(gd);
Composite singleBlockMaster = new Composite(composite1, SWT.BORDER | SWT.FILL);
singleBlockMaster.setLayout(glBlock);
new Label(singleBlockMaster, SWT.NONE).setText("Master document:");
masterDocName = new Text(singleBlockMaster, SWT.BORDER);
masterDocName.setLayoutData(gd);
new Label(singleBlockMaster, SWT.NONE).setText("Output parameter:");
masterParamName = new Text(singleBlockMaster, SWT.BORDER);
masterParamName.setLayoutData(gd);
new Label(singleBlockMaster, SWT.NONE).setText("Default value:");
masterDefaultValueOutputParam = new Text(singleBlockMaster, SWT.BORDER);
masterDefaultValueOutputParam.setLayoutData(gd);
gd = new GridData(GridData.FILL);
gd.horizontalSpan = 1;
getNavigationItem(composite);//riempie campi precedentemente inseriti
// if destination is one delete not visible!
// check how many destinations there are if only one disable delete button
if(destinationDocNameCombo.size() == 1){
for (Iterator iterator = deleteDestButtonVector.iterator(); iterator.hasNext();) {
Button button = (Button) iterator.next();
button.setVisible(false);
}
}
composite.pack();
composite.redraw();
setControl(composite);
}
private void fillDestinationCombo(String docDest, int comboToRedraw){
if(destinationDocNameCombo.elementAt(comboToRedraw) != null){
if(destinationDocNameCombo.elementAt(comboToRedraw).getItemCount() == 0){
metaDoc = Activator.getDefault().getMetadataDocumentComposition();
if(metaDoc != null){
Vector docs = metaDoc.getMetadataDocuments();
if(docs != null){
for(int i=0; i<docs.size(); i++){
MetadataDocument doc = (MetadataDocument)docs.elementAt(i);
String destName = doc.getName();
String destLabel = doc.getLabel();
if(doc.getMetadataParameters() != null && doc.getMetadataParameters().size()!=0){
if(destName != null && !destName.equals("")){
destinationDocNameCombo.elementAt(comboToRedraw).add(destName);
if(docDest != null && docDest.equals(destLabel)){
int pos = destinationDocNameCombo.elementAt(comboToRedraw).getItemCount();
destinationDocNameCombo.elementAt(comboToRedraw).select(pos-1);
}
}
}
}
}
}
}
String master = masterDocName.getText();
//per ridisegnare combo
if(master != null && !master.equals("")){
int posMaster =destinationDocNameCombo.elementAt(comboToRedraw).indexOf(master);
if(posMaster != -1){
destinationDocNameCombo.elementAt(comboToRedraw).remove(posMaster);
}
}
//rimuove anche destination precedentemente selezionata
if(destinCounter != 0){
for(int i=1; i<=destinCounter; i++){
String destPrec = destinationDocNameCombo.elementAt(i-1).getText();
int posDestPrec =destinationDocNameCombo.elementAt(destinCounter).indexOf(destPrec);
if(posDestPrec != -1){
destinationDocNameCombo.elementAt(destinCounter).remove(posDestPrec);
}
}
}
destinationDocNameCombo.elementAt(comboToRedraw).redraw();
}
}
private void refillDestinationCombo(String docDest, int comboToRedraw){
try{
destinationDocNameCombo.elementAt(comboToRedraw).getItemCount();
if(destinationDocNameCombo.elementAt(comboToRedraw) != null && destinationDocNameCombo.elementAt(comboToRedraw).getItemCount() != -1){
String[] items= destinationDocNameCombo.elementAt(comboToRedraw).getItems();
Vector<String> presentItems = new Vector<String>();
for(int j=0; j<items.length; j++){
presentItems.add(items[j]);
}
metaDoc = Activator.getDefault().getMetadataDocumentComposition();
if(metaDoc != null){
Vector docs = metaDoc.getMetadataDocuments();
if(docs != null){
for(int i=0; i<docs.size(); i++){
MetadataDocument doc = (MetadataDocument)docs.elementAt(i);
String destLabel = doc.getLabel();
if(doc.getMetadataParameters() != null && doc.getMetadataParameters().size()!=0){
String destinationName = doc.getName();
if(destinationName != null && !presentItems.contains(destinationName)){
destinationDocNameCombo.elementAt(comboToRedraw).add(destinationName);
if(docDest != null && docDest.equals(destinationName)){
int pos = destinationDocNameCombo.elementAt(comboToRedraw).getItemCount();
destinationDocNameCombo.elementAt(comboToRedraw).select(pos-1);
}
}
}
}
}
}
String master = masterDocName.getText();
//per ridisegnare combo
if(master != null && !master.equals("")){
int posMaster =destinationDocNameCombo.elementAt(comboToRedraw).indexOf(master);
if(posMaster != -1){
destinationDocNameCombo.elementAt(comboToRedraw).remove(posMaster);
}
}
//rimuove anche destination precedentemente selezionata
if(destinCounter != 0){
for(int i=1; i<=destinCounter; i++){
String destPrec = destinationDocNameCombo.elementAt(i-1).getText();
int posDestPrec =destinationDocNameCombo.elementAt(destinCounter).indexOf(destPrec);
if(posDestPrec != -1){
destinationDocNameCombo.elementAt(destinCounter).remove(posDestPrec);
}
}
}
destinationDocNameCombo.elementAt(comboToRedraw).redraw();
}
}catch (Exception e) {
// TODO: handle exception
}
}
private void fillDestinationParamCombo(String destDoc, int destinComboToRedraw, String paramInSel){
if(metaDoc != null){
Vector docs = metaDoc.getMetadataDocuments();
if(docs != null){
for(int i=0; i<docs.size(); i++){
MetadataDocument doc = (MetadataDocument)docs.elementAt(i);
String docName = doc.getName();
String docLabel= doc.getLabel();
if(docLabel != null && !docLabel.equals("") &&(docLabel.equals(destDoc))){
Vector params = doc.getMetadataParameters();
if(params != null){
for (int j =0; j<params.size(); j++){
MetadataParameter param = (MetadataParameter)params.elementAt(j);
String label = param.getLabel();
destinationInputParam.elementAt(destinComboToRedraw).add(label);
destinationInputParam.elementAt(destinComboToRedraw).setData(label, param.getUrlName());
String urlName= param.getUrlName();
if(paramInSel != null && paramInSel.equals(urlName)){
int pos = destinationInputParam.elementAt(destinComboToRedraw).getItemCount();
destinationInputParam.elementAt(destinComboToRedraw).select(pos-1);
}
}
}
}
}
}
}
}
private void fillMasterParamsData(String masterDoc){
if(metaDoc != null){
Vector docs = metaDoc.getMetadataDocuments();
if(docs != null){
for(int i=0; i<docs.size(); i++){
MetadataDocument doc = (MetadataDocument)docs.elementAt(i);
String docName = doc.getName();
String docLabel= doc.getLabel();
if(docLabel != null && !docLabel.equals("") && (docLabel.equals(masterDoc))){
Vector params = doc.getMetadataParameters();
if(params != null){
for (int j =0; j<params.size(); j++){
MetadataParameter param = (MetadataParameter)params.elementAt(j);
String label = param.getLabel();
masterParamName.setData(label, param.getUrlName());
masterParamName.setData(param.getUrlName(), label);
}
}
}
}
}
}
}
private HashMap<String, String> fillDocInfoUtil(){
metaDoc = Activator.getDefault().getMetadataDocumentComposition();
if(metaDoc != null){
Vector docs = metaDoc.getMetadataDocuments();
if(docs != null){
for(int i=0; i<docs.size(); i++){
MetadataDocument doc = (MetadataDocument)docs.elementAt(i);
String docLabel = doc.getLabel();
String docName = doc.getName();
docInfoUtil.put(docName, docLabel);
//e il contrario!
docInfoUtil.put(docLabel, docName);
}
}
}
return null;
}
private Parameter getNavigationItem(final Composite composite){
Parameter param = null;
IStructuredSelection selection =((SpagoBIModifyNavigationWizard)getWizard()).getSelection();
Object objSel = selection.toList().get(0);
Table listOfNavigations = (Table)objSel;
TableItem[] itemsSel = listOfNavigations.getSelection();
final GridLayout gl2 = new GridLayout();
gl2.numColumns = 3;
gl2.marginHeight =3;
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.widthHint = 200;
gridData.minimumWidth =200;
gridData.grabExcessHorizontalSpace = true;
gridData.horizontalSpan = 2;
if(itemsSel != null && itemsSel.length != 0){
final DocumentComposition docComp = Activator.getDefault().getDocumentComposition();
if(docComp != null && docComp.getDocumentsConfiguration() != null){
Vector docs = docComp.getDocumentsConfiguration().getDocuments();
if(docs != null){
for(int i=0; i<docs.size(); i++){
Parameters params = ((Document)docs.elementAt(i)).getParameters();
if(params != null){
for (int j = 0; j<params.getParameter().size(); j++){
param = params.getParameter().elementAt(j);
String navigName = itemsSel[0].getText();
if(param.getType() != null && param.getType().equalsIgnoreCase("OUT")
&& param.getNavigationName()!= null
&& param.getNavigationName().equals(navigName)){
navigationNameText.setText(navigName);
navigationNameText.setEditable(false);
String masterDoc = ((Document)docs.elementAt(i)).getSbiObjLabel();
String masterParam = param.getSbiParLabel();
String masterParamDefault = param.getDefaultVal();
masterDocName.setText(docInfoUtil.get(masterDoc));
masterDocName.setEditable(false);
fillMasterParamsData(masterDoc);
//masterParamName.setText(masterParam);
String labelMaster = (String)masterParamName.getData(masterParam);
if(labelMaster == null){
//edited by user
labelMaster=masterParam;
}
masterParamName.setText(labelMaster);
masterParamName.setEditable(false);
masterDefaultValueOutputParam.setText(masterParamDefault);
masterDefaultValueOutputParam.setEditable(false);
//cicla su destinazioni
Refresh refresh = param.getRefresh();
Vector<RefreshDocLinked> destinations = refresh.getRefreshDocLinked();
for(int k =0; k<destinations.size(); k++){
//secondo composite
final Composite composite2 = new Composite(composite, SWT.NONE);
composite2.setLayout(gl2);
destinCounter++;
final RefreshDocLinked destin = destinations.get(k);
String docDest = destin.getLabelDoc();
final String docDestParam = destin.getLabelParam();
//inserisce blocco x destinazione
Composite destBlock = new Composite(composite2, SWT.BORDER | SWT.FILL);
GridLayout glBlock = new GridLayout();
glBlock.numColumns = 3;
destBlock.setLayout(glBlock);
new Label(destBlock, SWT.NONE).setText("Destination document:");
destinationDocNameCombo.addElement(new Combo(destBlock, SWT.BORDER |SWT.READ_ONLY ));
destinationDocNameCombo.elementAt(destinCounter).setLayoutData(gridData);
destinationDocNameCombo.elementAt(destinCounter).setVisible(true);
fillDestinationCombo(docDest, destinCounter);
//crea una nuovo output text
new Label(destBlock, SWT.NONE).setText("Input parameter:");
Combo newText =new Combo(destBlock, SWT.BORDER |SWT.READ_ONLY);
destinationInputParam.addElement(newText);
newText.setLayoutData(gridData);
fillDestinationParamCombo(docDest, destinCounter, docDestParam);
new Label(destBlock, SWT.NONE).setText("Default value:");
destinationInputParamDefaultValue.addElement(new Text(destBlock, SWT.BORDER));
destinationInputParamDefaultValue.elementAt(destinCounter).setLayoutData(gridData);
setDefaultValue(docs,destinCounter,docDest,docDestParam);
final int element = k;
destinationDocNameCombo.elementAt(element).addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
Combo selectedCombo = (Combo) event.widget;
//ricavo dal vettore di combo la sua posizione
int destinComboToRedraw = destinationDocNameCombo.indexOf(selectedCombo);
//controlla se destinazione precedentem selezionata
boolean canSelect = canSelectDestination(selectedCombo.getText(), destinComboToRedraw);
if(!canSelect){
//messaggio di errore in dialog
selectedCombo.deselect((selectedCombo).getSelectionIndex());
final boolean[] result = new boolean[1];
Shell confirm = createErrorDialog(composite2.getParent(), result, 1);
confirm.setText("Error");
confirm.setSize(300,100);
confirm.open();
}else{
name = destinationDocNameCombo.elementAt(element).getText();
destinationInfo = destinationInfos.get(element);
destinationInfo.setDocDestName(name);
destinationInputParam.elementAt(destinComboToRedraw).removeAll();
String label = docInfoUtil.get(name);
fillDestinationParamCombo(label, destinComboToRedraw, docDestParam);
destinationInputParam.elementAt(destinComboToRedraw).redraw();
}
}
});
destinationInputParam.elementAt(element).addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
//verifica se � gi� presente...
ParameterBO bo = new ParameterBO();
String docLab =docInfoUtil.get(destinationDocNameCombo.elementAt(element).getText());
// boolean exists = bo.inputParameterExists(docComp, docLab, destinationInputParam.elementAt(element).getText());
// if(exists){
//
// final boolean[] result = new boolean[1];
// Shell confirm = createConfirmDialog(composite2.getParent(), result, element, destin);
// confirm.open();
//
// }else
// {
destinationInfo = destinationInfos.get(element);
//destinationInfo.setParamDestName(destinationInputParam.elementAt(element).getText());
String label = destinationInputParam.elementAt(element).getText();
String urlName= (String)destinationInputParam.elementAt(element).getData(label);
destinationInfo.setParamDestName(urlName);
destinationInfo.setParamDestId(destin.getIdParam());
// }
}
});
destinationInputParamDefaultValue.elementAt(element).addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
destinationInfo = destinationInfos.get(element);
destinationInfo.setParamDefaultValue(destinationInputParamDefaultValue.elementAt(element));
destinationInfo.setParamDestId(destin.getIdParam());
}
});
//pulsante delete
GridData gd = new GridData(GridData.FILL);
gd.horizontalSpan = 1;
Button deleteDestButton = new Button(composite2, SWT.PUSH) ;
deleteDestButtonVector.add(deleteDestButton);
deleteDestButton.setText("Delete");
deleteDestButton.setLayoutData(gd);
// set the counter id!!
deleteDestButton.setData((Integer)destinCounter);
Listener deleteListener = new Listener() {
public void handleEvent(Event event) {
switch (event.type) {
case SWT.Selection:
if(destinationDocNameCombo.size() == 1){
//non � possibile cancellare destination
final boolean[] result = new boolean[1];
Shell confirm = createErrorDialog(composite2.getParent(), result, 3);
confirm.setText("Error");
confirm.setSize(300,100);
confirm.open();
}else{
// I must get the selected combo!
Button b = (Button)event.widget;
Integer numero = (Integer)b.getData();
int selectionIndex = destinationDocNameCombo.elementAt(numero).getSelectionIndex();
name = destinationDocNameCombo.elementAt(numero).getItem(selectionIndex);
String nomen = destinationDocNameCombo.elementAt(numero).getItem(selectionIndex);
deletedParams.put(destin.getIdParam(), name);
deleteDestination(numero, composite2);
for(int i=0; i<=destinCounter;i++){
refillDestinationCombo(null, i);
}
// after delete if remains only one make not visible all delete buttons!
if(destinationDocNameCombo.size() == 1){
for (Iterator iterator = deleteDestButtonVector.iterator(); iterator.hasNext();) {
Button button = (Button) iterator.next();
if(!button.isDisposed())
button.setVisible(false);
}
}
// move index of other button:
for (Iterator iterator = deleteDestButtonVector.iterator(); iterator.hasNext();) {
Button button = (Button) iterator.next();
if (!button.isDisposed()){
Integer data = (Integer)button.getData();
if(data.intValue() > numero.intValue()){
button.setData(new Integer(data.intValue()-1));
}
}
}
}
composite.pack();
composite.redraw();
}
}
};
deleteDestButton.addListener(SWT.Selection, deleteListener);
destinationInfo = new DestinationInfo();
destinationInfo.setDocDestName(destinationDocNameCombo.elementAt(destinCounter).getText());
//destinationInfo.setParamDestName(destinationInputParam.elementAt(destinCounter).getText());
String label = destinationInputParam.elementAt(destinCounter).getText();
String urlName= (String)destinationInputParam.elementAt(destinCounter).getData(label);
destinationInfo.setParamDestName(urlName);
destinationInfo.setParamDefaultValue(destinationInputParamDefaultValue.elementAt(destinCounter));
destinationInfos.add(destinationInfo);
composite2.pack();
composite2.redraw();
}
//fine
}
}
setPageComplete(true);
}
}
}
}
}
composite.pack();
composite.layout();
return param;
}
private void deleteDestination(int selectionIndex, Composite toDispose){
destinCounter--;
destinationInfos.remove(selectionIndex);
destinationDocNameCombo.remove(selectionIndex);
destinationInputParam.remove(selectionIndex);
destinationInputParamDefaultValue.remove(selectionIndex);
Composite parent =toDispose.getParent();
toDispose.dispose();
}
private void setDefaultValue(Vector<Document> docs, int destinPos, String destDoc, String parLabel){
if(docs != null){
for(int i=0; i<docs.size(); i++){
Document doc = (Document)docs.elementAt(i);
if(doc.getSbiObjLabel().equals(destDoc)){
Parameters params = (doc).getParameters();
if(params != null){
for (int j = 0; j<params.getParameter().size(); j++){
Parameter param = params.getParameter().elementAt(j);
if(param.getSbiParLabel().equals(parLabel )&& param.getType().equals("IN")){
destinationInputParamDefaultValue.elementAt(destinPos).setText(param.getDefaultVal()!= null ? param.getDefaultVal() : "");
}
}
}
}
}
}
}
protected Shell createErrorDialog(Composite client, final boolean[] result, int messageType){
final Shell error = new Shell(client.getDisplay(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
error.setLayout(new GridLayout(3, false));
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 3;
error.setSize(300, 100);
Point pt = client.getDisplay().getCursorLocation ();
error.setLocation (pt.x, pt.y);
String message = "No more destination documents available.";
if(messageType == 1){
message = "Destination already selected.";
}else if(messageType == 2){
message = "Select a destination.";
}else if(messageType == 3){
message = "Operation denied.";
}
new Label(error, SWT.NONE).setText(message);
gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.horizontalSpan = 3;
final Button cancel = new Button(error, SWT.PUSH);
cancel.setLayoutData(gd);
cancel.setText("Cancel");
error.isReparentable();
Listener dialogListener = new Listener() {
public void handleEvent(Event event) {
result[0] = event.widget == cancel;
error.notifyListeners(event.type, event);
error.close();
}
};
cancel.addListener(SWT.Selection, dialogListener);
return error;
}
protected Shell createConfirmDialog(Composite client, final boolean[] result, int element, RefreshDocLinked destin){
final Shell confirm = new Shell(client.getDisplay(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
layout.marginWidth = 6;
layout.marginHeight = 6;
confirm.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 3;
confirm.setSize(400, 120);
String message = "Warning! Another navigation uses the same destination parameter. \n This operation will modify both. \nContinue? ";
Label label = new Label(confirm, SWT.NONE);
label.setText(message);
label.setLayoutData(gd);
gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.horizontalSpan = 1;
Point pt = client.getDisplay().getCursorLocation ();
confirm.setLocation (pt.x, pt.y);
final Button ok = new Button(confirm, SWT.PUSH);
ok.setText("Confirm");
ok.setLayoutData(gd);
Button cancel = new Button(confirm, SWT.PUSH);
cancel.setText("Cancel");
cancel.setLayoutData(gd);
confirm.isReparentable();
final int elem =element;
final String refreshID =destin.getIdParam();
Listener dialogListener = new Listener() {
public void handleEvent(Event event) {
result[0] = event.widget == ok;
confirm.notifyListeners(event.type, event);
confirm.close();
if(result[0]){
destinationInfo = destinationInfos.get(elem);
//destinationInfo.setParamDestName(destinationInputParam.elementAt(elem).getText());
String label = destinationInputParam.elementAt(elem).getText();
String urlName= (String)destinationInputParam.elementAt(elem).getData(label);
destinationInfo.setParamDestName(urlName);
destinationInfo.setParamDestId(refreshID);
}
}
};
ok.addListener(SWT.Selection, dialogListener);
cancel.addListener(SWT.Selection, dialogListener);
return confirm;
}
private boolean canSelectDestination(String currentDest, int currentCombo){
boolean canSel = true;
for(int i =0; i<destinationDocNameCombo.size(); i++){
if(i != currentCombo){
String prevDest = destinationDocNameCombo.elementAt(i).getText();
if(currentDest.equals(prevDest)){
canSel = false;
}
}
}
return canSel;
}
public Text getNavigationNameText() {
return navigationNameText;
}
public void setNavigationNameText(Text navigationNameText) {
this.navigationNameText = navigationNameText;
}
public DestinationInfo getDestinationInfo() {
return destinationInfo;
}
public void setDestinationInfo(DestinationInfo destinationInfo) {
this.destinationInfo = destinationInfo;
}
public Vector<Combo> getDestinationInputParam() {
return destinationInputParam;
}
public Vector<Combo> getDestinationDocNameCombo() {
return destinationDocNameCombo;
}
public Text getMasterDocName() {
return masterDocName;
}
public void setMasterDocName(Text masterDocName) {
this.masterDocName = masterDocName;
}
public Text getMasterParamName() {
return masterParamName;
}
public void setMasterParamName(Text masterParamName) {
this.masterParamName = masterParamName;
}
public Vector<DestinationInfo> getDestinationInfos() {
return destinationInfos;
}
public void setDestinationInfos(Vector<DestinationInfo> destinationInfos) {
this.destinationInfos = destinationInfos;
}
public int getDestinCounter() {
return destinCounter;
}
public void setDestinCounter(int destinCounter) {
this.destinCounter = destinCounter;
}
public Vector<Text> getDestinationInputParamDefaultValue() {
return destinationInputParamDefaultValue;
}
public void setDestinationInputParamDefaultValue(
Vector<Text> destinationInputParamDefaultValue) {
this.destinationInputParamDefaultValue = destinationInputParamDefaultValue;
}
public Text getMasterDefaultValueOutputParam() {
return masterDefaultValueOutputParam;
}
public void setMasterDefaultValueOutputParam(Text masterDefaultValueOutputParam) {
this.masterDefaultValueOutputParam = masterDefaultValueOutputParam;
}
public HashMap<String, String> getDocInfoUtil() {
return docInfoUtil;
}
public void setDocInfoUtil(HashMap<String, String> docInfoUtil) {
this.docInfoUtil = docInfoUtil;
}
public HashMap<String, String> getDeletedParams() {
return deletedParams;
}
public void setDeletedParams(HashMap<String, String> deletedParams) {
this.deletedParams = deletedParams;
}
public HashMap<String, String> getDeletedRefresh() {
return deletedRefresh;
}
public void setDeletedRefresh(HashMap<String, String> deletedRefresh) {
this.deletedRefresh = deletedRefresh;
}
}