for RMC Enhancement 46678
diff --git a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java
index 2a94ee3..d5cfeaf 100644
--- a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java
+++ b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java
@@ -62,6 +62,8 @@
public static final String attachment = "attachment"; //$NON-NLS-1$
+ public static final String treeBrowser = "treeBrowser"; //$NON-NLS-1$
+
//APIs
public String getName();
diff --git a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java
index dddaf18..1bba756 100644
--- a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java
+++ b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java
@@ -26,6 +26,8 @@
private String contributeTo;
+ private boolean createUDTChild;
+
private ExtendedOppositeImpl opposite;
public ExtendedReferenceImpl(MetaElement parent) {
@@ -71,6 +73,9 @@
opposite.parseElement(childElement);
}
+
+ createUDTChild = new Boolean(element.getAttribute(IMetaDef.treeBrowser));
+
qualifiedReferences = new ArrayList<QualifiedReference>();
List<Element> rqElements = XMLUtil.getChildElementsByTagName(element, IMetaDef.REFERENCE_QUALIFIERS);
if (rqElements == null || rqElements.isEmpty()) {
@@ -86,6 +91,10 @@
}
}
+ public boolean isCreateUDTChild() {
+ return createUDTChild;
+ }
+
public List<String> getValueTypes() {
return valueTypes;
}
diff --git a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
index 755a861..8070a61 100644
--- a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
+++ b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
@@ -34,13 +34,19 @@
import org.eclipse.epf.common.utils.FileUtil;
import org.eclipse.epf.common.utils.StrUtil;
import org.eclipse.epf.common.utils.Timer;
+import org.eclipse.epf.library.LibraryService;
import org.eclipse.epf.library.configuration.ConfigurationFilter;
import org.eclipse.epf.library.configuration.ConfigurationHelper;
import org.eclipse.epf.library.edit.IFilter;
import org.eclipse.epf.library.edit.TngAdapterFactory;
import org.eclipse.epf.library.edit.configuration.PracticeSubgroupItemProvider;
+import org.eclipse.epf.library.edit.meta.TypeDefUtil;
+import org.eclipse.epf.library.edit.meta.internal.ExtendedReferenceImpl;
import org.eclipse.epf.library.edit.process.IBSItemProvider;
+import org.eclipse.epf.library.edit.util.LibraryEditUtil;
+import org.eclipse.epf.library.edit.util.PracticePropUtil;
import org.eclipse.epf.library.edit.util.ProcessUtil;
+import org.eclipse.epf.library.edit.util.PropUtil;
import org.eclipse.epf.library.edit.util.Suppression;
import org.eclipse.epf.library.edit.util.TngUtil;
import org.eclipse.epf.library.layout.Bookmark;
@@ -74,6 +80,11 @@
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.WorkProduct;
import org.eclipse.epf.uma.util.AssociationHelper;
+import org.eclipse.epf.uma.util.ExtendedAttribute;
+import org.eclipse.epf.uma.util.ExtendedReference;
+import org.eclipse.epf.uma.util.ModifiedTypeMeta;
+import org.eclipse.epf.uma.util.UmaUtil;
+import org.eclipse.epf.uma.util.UserDefinedTypeMeta;
/**
* Builds the views defined for a method configuration.
@@ -552,6 +563,10 @@
// Either delegate the call or return nothing.
if (treeItemContentProvider != null) {
Collection items = treeItemContentProvider.getChildren(obj);
+ Collection udtReference = getUDTReference(obj);
+ if(udtReference != null){
+ items.addAll(udtReference);
+ }
for (Iterator it = items.iterator(); it.hasNext();) {
if (monitor.isCanceled()) {
return;
@@ -600,8 +615,7 @@
}
} else {
if (itorObj instanceof PracticeSubgroupItemProvider) {
- buildPracticeSubgroupTree(obj, parent,
- (PracticeSubgroupItemProvider) itorObj);
+ isCreateSubFolder(obj, parent, itorObj);
} else {
Bookmark b = createBookmark(me, parent);
if (!buildSubTree(itorObj, me, b)) {
@@ -619,7 +633,7 @@
}
} else {
if (itorObj instanceof PracticeSubgroupItemProvider) {
- buildPracticeSubgroupTree(obj, parent, (PracticeSubgroupItemProvider) itorObj);
+ isCreateSubFolder(obj, parent, itorObj);
} else {
iterate(itorObj, parent);
}
@@ -636,6 +650,51 @@
}
/**
+ * it udt designed as have treebroswer,create tree node for it
+ * @param obj
+ * @return
+ */
+ private Collection<?> getUDTReference(Object obj) {
+ Collection<?> result = null;
+ if(obj instanceof Practice && PracticePropUtil.getPracticePropUtil().isUdtType((Practice)obj)){
+ Practice practice = (Practice)obj;
+ UserDefinedTypeMeta udtMeta = PracticePropUtil.getPracticePropUtil().getUdtMeta(practice);
+ ModifiedTypeMeta modifiedTypeMeta = LibraryEditUtil.getInstance().getModifiedType(udtMeta.getId());
+ if(modifiedTypeMeta != null){
+ List<ExtendedAttribute> attributes = modifiedTypeMeta.getAttributes();
+ String flag = null;
+ if(flag != null && !new Boolean(flag)){
+ result = practice.getContentReferences();
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * for udt generateTreebrowserFolders attribute.If false,no sub folder
+ * @param obj
+ * @param parent
+ * @param itorObj
+ */
+ private void isCreateSubFolder(Object obj, Bookmark parent, Object itorObj) {
+ PracticeSubgroupItemProvider provider = (PracticeSubgroupItemProvider)itorObj;
+ if(provider.getPractice() != null && PracticePropUtil.getPracticePropUtil().isUdtType(provider.getPractice())){
+ //first UDT to get ID,use ID to get generateTreebrowserFolders
+ UserDefinedTypeMeta udtMeta = PracticePropUtil.getPracticePropUtil().getUdtMeta(provider.getPractice());
+ UserDefinedTypeMeta userDefineType = LibraryService.getInstance().getCurrentLibraryManager().getUserDefineType(udtMeta.getId());
+ String flag = userDefineType.getRteNameMap().get(UserDefinedTypeMeta._generateTreebrowserFolders);
+ if(Boolean.FALSE.toString().equals(flag)){
+ iterate(itorObj, parent);
+ }else{
+ buildPracticeSubgroupTree(obj, parent, (PracticeSubgroupItemProvider) itorObj);
+ }
+ }else{
+ buildPracticeSubgroupTree(obj, parent, (PracticeSubgroupItemProvider) itorObj);
+ }
+ }
+
+ /**
* create a bookmark under the specified parent. If no parent is specified,
*
* @param monitor
@@ -684,6 +743,14 @@
}
} else if (LibraryUtil.isProcess(element)) {
buildProcessSubTree(obj, (org.eclipse.epf.uma.Process) element, bm);
+ } else if (element instanceof Practice) {
+ ModifiedTypeMeta meta = TypeDefUtil.getMdtMeta(element);
+ if (meta == null) {
+ return false;
+ }else{
+ buildUDTSubTree(obj, element, bm, meta);
+ return true;
+ }
} else {
// System.out.println("Not handled: " + element);
return false;
@@ -692,6 +759,28 @@
return true;
}
+ /**
+ * create the children of the UDT
+ * @param obj
+ * @param element
+ * @param bm
+ * @param meta
+ */
+ private void buildUDTSubTree(Object obj, MethodElement element,
+ Bookmark bm, ModifiedTypeMeta meta) {
+ List<ExtendedReference> references = meta.getReferences();
+ iterate(obj, bm);//create references elements
+ for(ExtendedReference reference:references){
+ ExtendedReferenceImpl referenceimpl = (ExtendedReferenceImpl)reference;
+ boolean createUDTChild = referenceimpl.isCreateUDTChild();
+ List<MethodElement> items = PropUtil.getPropUtil().getExtendedReferenceList(
+ element, referenceimpl, false);
+ if(createUDTChild){
+ createFolderBookmark(element, bm, referenceimpl.getName(), referenceimpl.getName(), items, true);
+ }
+ }
+ }
+
private void buildItems(List elements, Bookmark bm) {
buildItems(elements, bm, false);
}
diff --git a/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java b/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java
index a31b570..822ee57 100644
--- a/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java
+++ b/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java
@@ -34,6 +34,7 @@
public static final String _shapeIconRelative = "shapeIconRelative"; //$NON-NLS-1$
public static final String _referenceQualifiers = "referenceQualifiers";//$NON-NLS-1$
public static final String _referenceQualifierNames = "referenceQualifierNames";//$NON-NLS-1$
+ public static final String _generateTreebrowserFolders = "generateTreebrowserFolders";//$NON-NLS-1$
public static String[] rteNames = {
_typeName,