KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > rcp > composite > groupedcontent > GroupedContentComposite


1 /*
2  * Created on Jun 17, 2005
3  * by alex
4  *
5  */

6 package com.nightlabs.rcp.composite.groupedcontent;
7
8 import java.util.ArrayList JavaDoc;
9 import java.util.HashMap JavaDoc;
10 import java.util.List JavaDoc;
11 import java.util.Map JavaDoc;
12
13 import org.eclipse.jface.viewers.ISelectionChangedListener;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15 import org.eclipse.jface.viewers.SelectionChangedEvent;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.custom.StackLayout;
18 import org.eclipse.swt.layout.GridData;
19 import org.eclipse.swt.widgets.Composite;
20
21 import com.nightlabs.rcp.composite.OrdinaryWrapperComposite;
22 import com.nightlabs.rcp.composite.TightWrapperComposite;
23
24 /**
25  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
26  *
27  */

28 public class GroupedContentComposite extends OrdinaryWrapperComposite {
29     
30     private TightWrapperComposite tableWrapper;
31     private GroupedContentSwitcherTable switcherTable;
32     
33     private Composite contentWrapper;
34     private StackLayout contentStackLayout;
35     
36     private List JavaDoc groupedContentProvider = new ArrayList JavaDoc();
37     private Map JavaDoc providerComposites = new HashMap JavaDoc();
38     
39     
40     private ISelectionChangedListener switcherListener = new ISelectionChangedListener() {
41         public void selectionChanged(SelectionChangedEvent event) {
42             IStructuredSelection selection = (IStructuredSelection)switcherTable.getTableViewer().getSelection();
43             if (selection.size() != 1)
44                 return;
45             GroupedContentProvider contentProvider = (GroupedContentProvider)selection.getFirstElement();
46             selectContentProvider(contentProvider);
47         }
48     };
49     
50     
51     
52     
53     /**
54      * @param parent
55      * @param style
56      * @param setLayoutData
57      */

58     public GroupedContentComposite(Composite parent, int style, boolean setLayoutData) {
59         super(parent, style, setLayoutData);
60         getGridLayout().numColumns = 2;
61             
62         tableWrapper = new TightWrapperComposite(this, SWT.NONE, false);
63         GridData tableGD = new GridData(GridData.FILL_BOTH);
64         tableGD.grabExcessHorizontalSpace = false;
65         tableGD.widthHint = 150;
66         tableWrapper.setLayoutData(tableGD);
67         
68         switcherTable = new GroupedContentSwitcherTable(tableWrapper, SWT.NONE);
69         switcherTable.getTableViewer().addSelectionChangedListener(switcherListener);
70         
71         contentWrapper = new Composite(this, SWT.NONE);
72         contentWrapper.setLayoutData(new GridData(GridData.FILL_BOTH));
73         contentStackLayout = new StackLayout();
74         contentWrapper.setLayout(contentStackLayout);
75     }
76     
77     
78     public void addGroupedContentProvider(GroupedContentProvider groupedContentProvider) {
79         this.groupedContentProvider.add(groupedContentProvider);
80         switcherTable.setInput(this.groupedContentProvider);
81         layout(true, true);
82     }
83     
84     public void addGroupedContentProvider(GroupedContentProvider groupedContentProvider, int index) {
85         this.groupedContentProvider.add(index, groupedContentProvider);
86         switcherTable.setInput(this.groupedContentProvider);
87         if (switcherTable.getTable().getItemCount() == 1) {
88             switcherTable.getTable().select(0);
89             selectContentProvider(groupedContentProvider);
90         }
91         layout(true, true);
92     }
93
94     protected void selectContentProvider(GroupedContentProvider contentProvider) {
95         Composite providerComp = (Composite)providerComposites.get(contentProvider);
96         if (providerComp == null) {
97             providerComp = contentProvider.createGroupContent(contentWrapper);
98             providerComposites.put(contentProvider, providerComp);
99         }
100         contentStackLayout.topControl = providerComp;
101         contentWrapper.layout();
102     }
103     
104     public void setGroupTitle(String JavaDoc title) {
105         switcherTable.setGroupTitle(title);
106     }
107 }
108
Popular Tags