/******************************************************************************* * 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.forms; import java.util.ArrayList; import java.util.List; import org.jboss.tools.common.model.ui.attribute.editor.TableStructuredEditor; import org.jboss.tools.common.meta.XAttribute; import org.jboss.tools.common.meta.XChild; import org.jboss.tools.common.meta.XModelEntity; import org.jboss.tools.common.meta.impl.XModelMetaDataImpl; import org.jboss.tools.common.model.ui.forms.FormActionData; import org.jboss.tools.common.model.ui.forms.FormAttributeData; import org.jboss.tools.common.model.ui.forms.FormData; import org.jboss.tools.common.model.ui.forms.IFormActionData; import org.jboss.tools.common.model.ui.forms.IFormAttributeData; import org.jboss.tools.common.model.ui.forms.InfoLayoutDataFactory; /** * @author glory */ public class FormLayoutDataUtil { private final static String STBFE_CLASS_NAME = "org.jboss.tools.common.model.ui.attribute.editor.JavaHyperlinkLineFieldEditor"; //$NON-NLS-1$ private final static String SBFEE_CLASS_NAME = "org.jboss.tools.common.model.ui.attribute.editor.StringButtonFieldEditorEx"; //$NON-NLS-1$ private final static String SELECT_IT_ACTION = "%SelectIt%"; //$NON-NLS-1$ private final static String INTERNAL_ACTION = "%internal%"; //$NON-NLS-1$ private final static String DEFAULT_DELETE_ACTION = "DeleteActions.Delete"; //$NON-NLS-1$ private final static String DEFAULT_EDIT_ACTION = "Properties.Properties"; //$NON-NLS-1$ public static IFormAttributeData[] createGeneralFormAttributeData(String entityName) { return createFormAttributeData(entityName, "general"); //$NON-NLS-1$ } public static IFormAttributeData[] createAdvancedFormAttributeData(String entityName) { return createFormAttributeData(entityName, "advanced"); //$NON-NLS-1$ } public static IFormAttributeData[] createFormAttributeData(String entityName, String categoryName) { XModelEntity entity = XModelMetaDataImpl.getInstance().getEntity(entityName); if(entity == null) return new IFormAttributeData[0]; List<IFormAttributeData> list = new ArrayList<IFormAttributeData>(); XAttribute[] as = entity.getAttributes(); for (int i = 0; i < as.length; i++) { if(!as[i].isVisible()) continue; String category = as[i].getProperty("category"); //$NON-NLS-1$ if(category != null && category.equals(categoryName)) { String editorName = as[i].getEditor().getName(); if("AccessibleJava".equals(editorName)) { //$NON-NLS-1$ list.add(new FormAttributeData(as[i].getName(), null, STBFE_CLASS_NAME)); } else if("Note".equals(editorName)) { //$NON-NLS-1$ list.add(new FormAttributeData(as[i].getName(), InfoLayoutDataFactory.getInstance())); } else if("TreeChooser".equals(editorName)) { //$NON-NLS-1$ list.add(new FormAttributeData(as[i].getName(), null, SBFEE_CLASS_NAME)); } else { list.add(new FormAttributeData(as[i].getName())); } } } return list.toArray(new IFormAttributeData[0]); } public static String[] getChildEntitiesWithAttribute(String entityName, String attributeName) { XModelEntity entity = XModelMetaDataImpl.getInstance().getEntity(entityName); if(entity == null) return new String[0]; List<String> list = new ArrayList<String>(); XChild[] cs = entity.getChildren(); for (int i = 0; i < cs.length; i++) { XModelEntity c = entity.getMetaModel().getEntity(cs[i].getName()); if(c != null && c.getAttribute(attributeName) != null) list.add(c.getName()); } return list.toArray(new String[0]); } public static FormData createAllChildrenFormData(String name, String entityName, String childName, String attributeName, String createAction) { return createChildrenFormData(name, entityName, childName, attributeName, FormLayoutDataUtil.getChildEntitiesWithAttribute(entityName, attributeName), createAction); } public static FormData createChildrenFormData(String name, String entityName, String childName, String attributeName, String[] entityNames, String createAction) { return new FormData( name, "", //"Description //$NON-NLS-1$ childName != null ? childName : entityName, new FormAttributeData[]{new FormAttributeData(attributeName, 100, attributeName)}, entityNames, FormLayoutDataUtil.createDefaultFormActionData(createAction) ); } /** * * @param actionPath (non-translatable) * @return */ public static IFormActionData[] createDefaultFormActionData(String actionPath) { return createDefaultFormActionData(actionPath, false); } /** * * @param actionPath (non-translatable) * @param defaultEdit * @return */ public static IFormActionData[] createDefaultFormActionData(String actionPath, boolean defaultEdit) { String editAction = defaultEdit ? DEFAULT_EDIT_ACTION : SELECT_IT_ACTION; return new IFormActionData[] { new FormActionData(TableStructuredEditor.ADD_ACTION, actionPath), new FormActionData(TableStructuredEditor.REMOVE_ACTION, DEFAULT_DELETE_ACTION), new FormActionData(TableStructuredEditor.EDIT_ACTION, editAction), new FormActionData(TableStructuredEditor.UP_ACTION, INTERNAL_ACTION), new FormActionData(TableStructuredEditor.DOWN_ACTION, INTERNAL_ACTION) }; } }