comparison dwtx/jface/preference/PreferenceContentProvider.d @ 34:b3c8e32d406f

preference
author Frank Benoit <benoit@tionex.de>
date Sat, 05 Apr 2008 01:45:47 +0200
parents
children
comparison
equal deleted inserted replaced
33:f25582573129 34:b3c8e32d406f
1 /*******************************************************************************
2 * Copyright (c) 2003, 2006 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM Corporation - initial API and implementation
10 * Port to the D programming language:
11 * Frank Benoit <benoit@tionex.de>
12 *******************************************************************************/
13 module dwtx.jface.preference.PreferenceContentProvider;
14
15 import dwtx.jface.preference.IPreferenceNode;
16 import dwtx.jface.preference.PreferenceManager;
17
18 import dwtx.jface.viewers.ITreeContentProvider;
19 import dwtx.jface.viewers.Viewer;
20
21 import dwt.dwthelper.utils;
22
23 /**
24 * Provides a tree model for <code>PreferenceManager</code> content.
25 *
26 * @since 3.0
27 */
28 public class PreferenceContentProvider : ITreeContentProvider {
29
30 private PreferenceManager manager;
31
32 /* (non-Javadoc)
33 * @see dwtx.jface.viewers.IContentProvider#dispose()
34 */
35 public void dispose() {
36 manager = null;
37 }
38
39 /**
40 * Find the parent of the provided node. Will search recursivly through the
41 * preference tree.
42 *
43 * @param parent the possible parent node.
44 * @param target the target child node.
45 * @return the parent node of the child node.
46 */
47 private IPreferenceNode findParent(IPreferenceNode parent,
48 IPreferenceNode target) {
49 if (parent.getId().equals(target.getId())) {
50 return null;
51 }
52
53 IPreferenceNode found = parent.findSubNode(target.getId());
54 if (found !is null) {
55 return parent;
56 }
57
58 IPreferenceNode[] children = parent.getSubNodes();
59
60 for (int i = 0; i < children.length; i++) {
61 found = findParent(children[i], target);
62 if (found !is null) {
63 return found;
64 }
65 }
66
67 return null;
68 }
69
70 /*
71 * (non-Javadoc)
72 * @see dwtx.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
73 */
74 public Object[] getChildren(Object parentElement) {//must be an instance of <code>IPreferenceNode</code>.
75 return arraycast!(Object)((cast(IPreferenceNode) parentElement).getSubNodes());
76 }
77
78 /*
79 * (non-Javadoc)
80 * @see dwtx.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
81 */
82 public Object[] getElements(Object inputElement) {// must be an instance of <code>PreferenceManager</code>.
83 return getChildren(cast(Object)(cast(PreferenceManager) inputElement).getRoot_package());
84 }
85
86 /*
87 * (non-Javadoc)
88 * @see dwtx.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
89 */
90 public Object getParent(Object element) {//must be an instance of <code>IPreferenceNode</code>.
91 IPreferenceNode targetNode = cast(IPreferenceNode) element;
92 IPreferenceNode root = manager.getRoot_package();
93 return cast(Object)findParent(root, targetNode);
94 }
95
96 /* (non-Javadoc)
97 * @see dwtx.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
98 */
99 public bool hasChildren(Object element) {
100 return getChildren(element).length > 0;
101 }
102
103 /* (non-Javadoc)
104 * @see dwtx.jface.viewers.IContentProvider#inputChanged(dwtx.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
105 */
106 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
107 manager = cast(PreferenceManager) newInput;
108 }
109 /**
110 * Set the manager for the preferences.
111 * @param manager The manager to set.
112 *
113 * @since 3.1
114 */
115 protected void setManager(PreferenceManager manager) {
116 this.manager = manager;
117 }
118 }