Mercurial > projects > dwt-addons
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 } |