]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/views/ArtifactsBrowser.java
8c1da64dc74d0aa72b149e2152979301a291544e
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / views / ArtifactsBrowser.java
1 package org.argeo.slc.client.ui.dist.views;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5 import javax.jcr.Session;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.argeo.ArgeoException;
10 import org.argeo.slc.client.ui.dist.DistConstants;
11 import org.argeo.slc.client.ui.dist.DistPlugin;
12 import org.argeo.slc.client.ui.dist.providers.ArtifactLabelProvider;
13 import org.argeo.slc.client.ui.dist.providers.ArtifactsTreeContentProvider;
14 import org.argeo.slc.client.ui.dist.utils.GenericDoubleClickListener;
15 import org.argeo.slc.repo.RepoConstants;
16 import org.eclipse.jface.viewers.TreeViewer;
17 import org.eclipse.swt.SWT;
18 import org.eclipse.swt.layout.GridLayout;
19 import org.eclipse.swt.widgets.Composite;
20 import org.eclipse.swt.widgets.Tree;
21 import org.eclipse.swt.widgets.TreeColumn;
22 import org.eclipse.ui.part.ViewPart;
23
24 /**
25 * Basic View to browse a maven base repository
26 */
27
28 public class ArtifactsBrowser extends ViewPart implements DistConstants,
29 RepoConstants {
30 private final static Log log = LogFactory.getLog(ArtifactsBrowser.class);
31 public final static String ID = DistPlugin.ID + ".artifactsBrowser";
32
33 /* DEPENDENCY INJECTION */
34 private Session jcrSession;
35 // Business objects
36 private Node rootNode;
37
38 // This page widgets
39 private TreeViewer artifactTreeViewer;
40
41 @Override
42 public void createPartControl(Composite parent) {
43 GridLayout gl = new GridLayout(1, false);
44 parent.setLayout(gl);
45 artifactTreeViewer = createArtifactsTreeViewer(parent);
46
47 // context menu : it is completely defined in the plugin.xml file.
48
49 // Nothing in the context menu for the time being
50 // MenuManager menuManager = new MenuManager();
51 // Menu menu =
52 // menuManager.createContextMenu(artifactTreeViewer.getTree());
53 // artifactTreeViewer.getTree().setMenu(menu);
54 // getSite().registerContextMenu(menuManager, artifactTreeViewer);
55
56 getSite().setSelectionProvider(artifactTreeViewer);
57 // packagesViewer.setComparer(new NodeViewerComparer());
58
59 // Model initialisation
60 if (jcrSession != null) {
61 try {
62 rootNode = jcrSession.getNode(ARTIFACTS_BASE_PATH);
63 artifactTreeViewer.setInput(rootNode);
64 } catch (RepositoryException e) {
65 throw new ArgeoException("Cannot load base artifact nodes", e);
66 }
67 }
68 }
69
70 protected TreeViewer createArtifactsTreeViewer(Composite parent) {
71 int style = SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION;
72 Tree tree = new Tree(parent, style);
73 createColumn(tree, "Artifacts", SWT.LEFT, 300);
74 createColumn(tree, "Date created", SWT.LEFT, 105);
75 createColumn(tree, "Size", SWT.RIGHT, 55);
76 tree.setLinesVisible(true);
77 tree.setHeaderVisible(true);
78
79 TreeViewer viewer = new TreeViewer(tree);
80
81 viewer.setContentProvider(new ArtifactsTreeContentProvider());
82 viewer.setLabelProvider(new ArtifactLabelProvider());
83 viewer.addDoubleClickListener(new GenericDoubleClickListener(viewer));
84 viewer.setInput(rootNode);
85 return viewer;
86 }
87
88 private static TreeColumn createColumn(Tree parent, String name, int style,
89 int width) {
90 TreeColumn result = new TreeColumn(parent, style);
91 result.setText(name);
92 result.setWidth(width);
93 result.setMoveable(true);
94 result.setResizable(true);
95 return result;
96 }
97
98 protected TreeViewer getArtifactTreeViewer() {
99 return artifactTreeViewer;
100 }
101
102 @Override
103 public void setFocus() {
104 // TODO Auto-generated method stub
105 }
106
107 /* DEPENDENCY INJECTION */
108 public void setJcrSession(Session jcrSession) {
109 this.jcrSession = jcrSession;
110 }
111 }