001    /*
002      Copyright (C) 2003 Laurent Martelli <laurent@aopsys.com>
003      
004      This program is free software; you can redistribute it and/or modify
005      it under the terms of the GNU Lesser General Public License as
006      published by the Free Software Foundation; either version 2 of the
007      License, or (at your option) any later version.
008    
009      This program is distributed in the hope that it will be useful, but
010      WITHOUT ANY WARRANTY; without even the implied warranty of
011      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
012      Lesser General Public License for more details.
013    
014      You should have received a copy of the GNU Lesser General Public
015      License along with this program; if not, write to the Free Software
016      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
017      USA */
018    
019    package org.objectweb.jac.aspects.gui;
020    
021    import java.util.HashSet;
022    import java.util.Hashtable;
023    import org.objectweb.jac.core.rtti.CollectionItem;
024    import org.objectweb.jac.core.rtti.FieldItem;
025    import org.objectweb.jac.core.rtti.MemberItem;
026    import org.objectweb.jac.core.rtti.RttiAC;
027    
028    /**
029     * Defines a table collection view
030     */
031    public class CollectionItemView extends MemberItemView {
032        public CollectionItemView(CollectionItem collection, String viewName) {
033            super(collection,viewName);
034            this.collection = collection;
035        }
036    
037        CollectionItem collection;
038        CollectionItem getCollection() {
039            return collection;
040        }
041    
042        MemberItem[] membersOrder;
043        public MemberItem[] getMembersOrder() {
044            return membersOrder;
045        }
046        public void setMembersOrder(MemberItem[] newMembersOrder) {
047            this.membersOrder = newMembersOrder;
048        }
049    
050        CollectionItem multiLineCollection;
051        public CollectionItem getMultiLineCollection() {
052            return multiLineCollection;
053        }
054        public void setMultiLineCollection(CollectionItem newMultiLineCollection) {
055            this.multiLineCollection = newMultiLineCollection;
056        }
057    
058        FieldItem groupBy;
059        public FieldItem getGroupBy() {
060            return groupBy;
061        }
062        public void setGroupBy(FieldItem newGroupBy) {
063            this.groupBy = newGroupBy;
064        }
065    
066        boolean embeddedAdded;
067        public void setEmbeddedAdded(boolean embedded) {
068            this.embeddedAdded = embedded;
069        }
070        public boolean isEmbeddedAdded() {
071            return embeddedAdded;
072        }
073    
074        HashSet embeddedEditorColumns = new HashSet();
075        boolean embeddedEditors = false;
076        public void setEmbeddedEditors(boolean embeddedEditors) {
077            this.embeddedEditors = embeddedEditors;
078        }
079        public void addEmbeddedEditorColumn(MemberItem field) {
080            embeddedEditorColumns.add(field);
081        }
082        public boolean isEmbeddedEditors(MemberItem field) {
083            return embeddedEditors || embeddedEditorColumns.contains(field);
084        }
085        public boolean isEmbeddedEditors() {
086            return embeddedEditors;
087        }
088    
089        boolean viewableItems = true;
090        public boolean isViewableItems() {
091            if (collection.isMap())
092                return RttiAC.isIndex(collection) && viewableItems;
093            else
094                return viewableItems;
095        }
096        public void setViewableItems(boolean newViewableItems) {
097            this.viewableItems = newViewableItems;
098        }
099    
100        boolean enableLinks = true;
101        public void setEnableLinks(boolean enable) {
102            this.enableLinks = enable;
103        }
104        public boolean areLinksEnabled() {
105            return enableLinks;
106        }
107    
108        /** MemberItem -> viewType */
109        Hashtable viewTypes = new Hashtable();
110        public void setViewType(MemberItem member, String viewType) {
111            viewTypes.put(member,viewType);
112        }
113        public String getViewType(MemberItem member) {
114            return (String)viewTypes.get(member);
115        }
116    
117        FieldItem additionalRow;
118        public FieldItem getAdditionalRow() {
119            return additionalRow;
120        }
121        public void setAdditionalRow(FieldItem newAdditionalRow) {
122            this.additionalRow = newAdditionalRow;
123        }
124    }
125