/** 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; } }