Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
PListRowFactory.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
3 *
4 * Copyright 2018 Basis Technology Corp.
5 * Contact: carrier <at> sleuthkit <dot> org
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19package org.sleuthkit.autopsy.contentviewers;
20
21import java.util.Arrays;
22import java.util.List;
23import java.util.Objects;
24import org.openide.nodes.AbstractNode;
25import org.openide.nodes.ChildFactory;
26import org.openide.nodes.Children;
27import org.openide.nodes.Node;
28import org.openide.nodes.Sheet;
29import org.sleuthkit.autopsy.contentviewers.PListViewer.PropKeyValue;
30import org.sleuthkit.autopsy.contentviewers.PListViewer.PropertyType;
31import org.sleuthkit.autopsy.datamodel.NodeProperty;
32
36
37class PListRowFactory extends ChildFactory<Integer> {
38
39 private final List<PropKeyValue> rows;
40
41 PListRowFactory(final List<PropKeyValue> rows) {
42 this.rows = rows;
43 }
44
51 @Override
52 protected boolean createKeys(final List<Integer> keys) {
53 if (rows != null) {
54 for (int i = 0; i < rows.size(); i++) {
55 keys.add(i);
56 }
57 }
58 return true;
59 }
60
66 @Override
67 protected Node createNodeForKey(final Integer key) {
68 if (Objects.isNull(rows) || rows.isEmpty() || key >= rows.size()) {
69 return null;
70 }
71 return new PListNode(rows.get(key));
72 }
73}
74
78class PListNode extends AbstractNode {
79
80 private final PropKeyValue propKeyVal;
81
82 PListNode(final PropKeyValue propKeyVal) {
83
84 super(propKeyVal.getChildren() == null ? Children.LEAF : new PListNodeChildren(propKeyVal.getChildren()));
85
86 this.propKeyVal = propKeyVal;
87
88 super.setName(propKeyVal.getKey());
89 super.setDisplayName(propKeyVal.getKey());
90 if (propKeyVal.getType() == PropertyType.ARRAY) {
91 this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/keychain-16.png");
92 } else if (propKeyVal.getType() == PropertyType.DICTIONARY) {
93 this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/keys-dict-16.png");
94 } else {
95 this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/key-16.png");
96 }
97
98 }
99
103 @Override
104 protected Sheet createSheet() {
105
106 final Sheet sheet = super.createSheet();
107 Sheet.Set properties = sheet.get(Sheet.PROPERTIES);
108 if (properties == null) {
109 properties = Sheet.createPropertiesSet();
110 sheet.put(properties);
111 }
112
113 properties.put(new NodeProperty<>(Bundle.PListNode_TypeCol(),
114 Bundle.PListNode_TypeCol(),
115 Bundle.PListNode_TypeCol(),
116 propKeyVal.getType().name())); // NON-NLS
117
118 properties.put(new NodeProperty<>(Bundle.PListNode_ValueCol(),
119 Bundle.PListNode_ValueCol(),
120 Bundle.PListNode_ValueCol(),
121 (propKeyVal.getChildren() == null) ? propKeyVal.getValue() : "")); // NON-NLS
122
123 return sheet;
124 }
125
129 private static class PListNodeChildren extends Children.Keys<PropKeyValue> {
130
131 private final List<PropKeyValue> children;
132
133 PListNodeChildren(final PropKeyValue... children) {
134 super();
135 this.children = Arrays.asList(children);
136 }
137
138 @Override
139 protected void addNotify() {
140 super.setKeys(this.children);
141 }
142
143 @Override
144 protected Node[] createNodes(final PropKeyValue propKeyVal) {
145 return new Node[]{new PListNode(propKeyVal)};
146 }
147
148 }
149
150}

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.