/* * � 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 java.util.ArrayList; import com.ibm.commons.iloader.node.lookups.api.StringLookup; import com.ibm.commons.util.StringUtil; import com.ibm.designer.domino.ide.resources.extensions.DesignerDesignElement; import com.ibm.designer.domino.ui.commons.extensions.DesignerResource; /** * View and Folder Design Element Picker. This property editor will provide a dialog to select either * view or folder Design Elements from the Designer Project. The display labels take the form * "View/Folder Name - Last Alias". When one of the Views/Folders is selected, the last alias * (or View/Folder name if no alias is specified) will be set in source. */ public class ViewAndFolderDesignElementPicker extends AbstractDesignElementPicker { private static String VIEW_NAME_ALIAS_SEPARATOR = " - "; private static String DIALOG_TITLE = "Select View or Folder"; // $NLX-ViewAndFolderDesignElementPicker.SelectVieworFolder-1$ private static String VIEW_DESIGN_ELEMENT_STRING = "View"; // $NLX-ViewAndFolderDesignElementPicker.View-1$ private static String FOLDER_DESIGN_ELEMENT_STRING = "Folder"; // $NLX-ViewAndFolderDesignElementPicker.Folder-1$ /* * (non-Javadoc) * @see com.ibm.xsp.extlib.designer.tooling.propeditor.AbstractDesignElementPicker#getDesignElementIDs() */ @Override protected String[] getDesignElementIDs() { return new String[]{DesignerResource.TYPE_VIEW,DesignerResource.TYPE_FOLDER}; } /* * (non-Javadoc) * @see com.ibm.xsp.extlib.designer.tooling.propeditor.AbstractDesignElementPicker#getDialogTitle(java.lang.String) */ @Override protected String getDialogTitleText() { return DIALOG_TITLE; } /* * (non-Javadoc) * @see com.ibm.xsp.extlib.designer.tooling.propeditor.AbstractDesignElementPicker#useDialog() */ @Override protected boolean useDialog() { return true; } /* * (non-Javadoc) * @see com.ibm.xsp.extlib.designer.tooling.propeditor.AbstractDesignElementPicker#getLabelForDesignElementID(java.lang.String) */ @Override protected String getLabelForDesignElementID(String designElementId) { if(StringUtil.equals(designElementId, DesignerResource.TYPE_VIEW)){ return VIEW_DESIGN_ELEMENT_STRING; } else if(StringUtil.equals(designElementId, DesignerResource.TYPE_FOLDER)){ return FOLDER_DESIGN_ELEMENT_STRING; } else{ return super.getLabelForDesignElementID(designElementId); } } /* * (non-Javadoc) * @see com.ibm.xsp.extlib.designer.tooling.propeditor.AbstractDesignElementPicker#createDesignElementLookup(com.ibm.designer.domino.ide.resources.extensions.DesignerDesignElement[]) */ @Override protected StringLookup createDesignElementLookup(DesignerDesignElement[] designElements) { ArrayList<String> codes = new ArrayList<String>(); ArrayList<String> labels = new ArrayList<String>(); for(int i=0; i<designElements.length; i++){ DesignerDesignElement view = designElements[i]; String viewName = view.getName(); String viewAlias = super.getAliasToDisplay(view); if(StringUtil.isNotEmpty(viewName)){ String label = viewName; if(StringUtil.isNotEmpty(viewAlias)){ label = label + VIEW_NAME_ALIAS_SEPARATOR + viewAlias; labels.add(label); codes.add(viewAlias); } else{ labels.add(label); codes.add(viewName); } } } //ensure consistency of our codes and labels before creating a StringLookup from them. if(codes.size()>0 && labels.size()>0 && codes.size()==labels.size()){ String[] codesArray = codes.toArray(new String[codes.size()]); String[] labelsArray = labels.toArray(new String[labels.size()]); if(null != codesArray && null != labelsArray && codesArray.length>0 && labelsArray.length>0 && codesArray.length==labelsArray.length){ return new StringLookup(codesArray,labelsArray); } } return null; } }