/* * � Copyright IBM Corp. 2011 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.ibm.xsp.extlib.designer.tooling.propeditor; import static com.ibm.xsp.extlib.designer.tooling.constants.IExtLibRegistry.EXT_LIB_NAMESPACE_URI; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import com.ibm.commons.iloader.node.DataNode; import com.ibm.commons.iloader.node.lookups.api.ILookup; import com.ibm.commons.iloader.node.lookups.api.StringLookup; import com.ibm.commons.iloader.node.views.DataNodeBinding; import com.ibm.commons.swt.data.controls.DCUtils; import com.ibm.commons.swt.data.editors.ComboLookupEditor; import com.ibm.commons.swt.data.editors.api.CompositeEditor; import com.ibm.designer.domino.xsp.api.util.XPagesDOMUtil; /** * @author mblout * DataNodeBinding dn = DCUtils.findDataNodeBinding(getParent(), false); DataNode dN = dn.getDataNode(); Object val = dN.getCurrentObject(); // FacesRegistry registry = getDesignerProject(getParent()) // .getFacesRegistry(); if ((val instanceof Element) && (getDesignerProject(getParent()) != null)) { Map<String, PublishedObject> map = new HashMap<String, PublishedObject>(); try { PublishedUtil.getAllPublishedObjects(map, (Node) val, (DesignerProject)getDesignerProject(getParent()), false); String varArray[] = new String[map.size()]; int i = 0; for (PublishedObject obj : map.values()) { varArray[i++] = obj.getName(); } return varArray; } catch (DesignerProjectException e) { } } return null; */ public class ConnectionManagerCombo extends ComboLookupEditor { @Override public void initControlValue(CompositeEditor parent, String value) { super.initControlValue(parent, value); Control combo = parent.getEditorControl(); this.setLookup(combo, createConnectionLookup(parent)); } public static String[] getLookupStrings(Composite comp) { DataNodeBinding dnb = DCUtils.findDataNodeBinding(comp, false); DataNode dn = dnb.getDataNode(); String[] a = null; if(dn != null){ Object el = dn.getDataProvider().getParentObject(); if(el instanceof Element){ Element elem = (Element)el; Set<Node> parents = new HashSet<Node>(); for (Node pn = elem; pn != null; pn = pn.getParentNode()) parents.add(pn); Document doc = elem.getOwnerDocument(); NodeList children = doc.getElementsByTagNameNS(EXT_LIB_NAMESPACE_URI, "connectionManager"); // $NON-NLS-1$ List<String> mgrnames = new ArrayList<String>(); for (int i=0; i < children.getLength(); i++) { Element mgrelem = (Element)children.item(i); if (parents.contains(mgrelem.getParentNode())) { String name = XPagesDOMUtil.getAttribute(mgrelem, "id"); // $NON-NLS-1$ if (name != null) mgrnames.add(name); } } a = new String[mgrnames.size()]; a = mgrnames.toArray(a); } } return a; } public static ILookup createConnectionLookup(Composite parent) { ILookup lookup = null; String[] a = getLookupStrings(parent); if ( a != null) lookup = new StringLookup(a); return lookup; } @Override public Control createControl(CompositeEditor parent) { return super.createControl(parent); } /** * @param lookup * @param editable */ public ConnectionManagerCombo(Composite comp, boolean editable) { super(createConnectionLookup(comp), editable); } }