001: /*
002: * The contents of this file are subject to the
003: * Mozilla Public License Version 1.1 (the "License");
004: * you may not use this file except in compliance with the License.
005: * You may obtain a copy of the License at http://www.mozilla.org/MPL/
006: *
007: * Software distributed under the License is distributed on an "AS IS"
008: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
009: * See the License for the specific language governing rights and
010: * limitations under the License.
011: *
012: * The Initial Developer of the Original Code is Simulacra Media Ltd.
013: * Portions created by Simulacra Media Ltd are Copyright (C) Simulacra Media Ltd, 2004.
014: *
015: * All Rights Reserved.
016: *
017: * Contributor(s):
018: */
019: package org.openharmonise.him.serverconfig;
020:
021: import java.awt.event.*;
022: import java.util.*;
023:
024: import org.openharmonise.commons.xml.namespace.*;
025: import org.openharmonise.him.*;
026: import org.openharmonise.him.editors.report.swing.*;
027: import org.openharmonise.vfs.*;
028: import org.openharmonise.vfs.metadata.*;
029: import org.openharmonise.vfs.metadata.range.*;
030: import org.openharmonise.vfs.metadata.value.*;
031: import org.openharmonise.vfs.servers.ServerList;
032: import org.openharmonise.webdav.client.value.*;
033:
034: /**
035: *
036: * @author matt treanor
037: * @version $Revision: 1.2 $
038: *
039: */
040: public class RelatedResourceDisplay extends JComboTree {
041:
042: private PropertyInstance m_prop = null;
043: private HashMap m_changedValues = null;
044: private PropertyInstance m_propInst = null;
045: private static final String COMMAND_CHANGE = "CHANGE";
046: private AbstractPreviewConfigOptions m_options = null;
047:
048: /**
049: *
050: */
051: public RelatedResourceDisplay(AbstractPreviewConfigOptions options) {
052: super ();
053: m_options = options;
054: m_changedValues = new HashMap();
055: this .setActionCommand(COMMAND_CHANGE);
056: this .addActionListener(this );
057: }
058:
059: public void actionPerformed(ActionEvent ae) {
060:
061: if (ae.getActionCommand().equals(COMMAND_CHANGE)) {
062: String valPath = getPath();
063: String sPath = m_propInst.getVirtualFile().getFullPath();
064: this .m_changedValues.put(sPath, valPath);
065: m_options.fireChangesMade();
066: } else {
067: super .actionPerformed(ae);
068: }
069: }
070:
071: public void populate(PropertyInstance propInst) {
072: AbstractVirtualFileSystem vfs = propInst.getVirtualFile()
073: .getVFS();
074: m_propInst = propInst;
075: VirtualFile vFile = propInst.getVirtualFile();
076: String path = vFile.getFullPath();
077: if (m_changedValues != null
078: && m_changedValues.containsKey(path)) {
079: String pagePath = (String) m_changedValues.get(path);
080: this .setPath(vfs, pagePath);
081: } else {
082: Property prop = propInst.getDefinition();
083:
084: ResourceRange propRange = (ResourceRange) prop.getRange();
085: List aHREFs = propRange.getHREFs();
086:
087: Iterator itor = aHREFs.iterator();
088: String sGroupPath = null;
089: while (itor.hasNext()) {
090: sGroupPath = (String) itor.next();
091: this .addCollectionPath(sGroupPath);
092: Iterator iter = propInst.getValues().iterator();
093: String sPath = null;
094: if (iter.hasNext()) {
095: ResourceValue val = (ResourceValue) iter.next();
096: sPath = val.getValue();
097: }
098: if (sPath != null) {
099: this .setPath(vfs, sPath);
100: } else {
101: this .m_value.setText("");
102: }
103: }
104: }
105: }
106:
107: public void saveChangedValues() {
108: Iterator itor = m_changedValues.keySet().iterator();
109: String pagePath = null;
110: String valPath = null;
111: AbstractVirtualFileSystem vfs = ServerList.getInstance()
112: .getHarmoniseServer().getVFS();
113: while (itor.hasNext()) {
114: pagePath = (String) itor.next();
115: valPath = (String) m_changedValues.get(pagePath);
116: VirtualFile vFile = vfs.getVirtualFile(pagePath)
117: .getResource();
118: PropertyInstance propInst = vFile.getProperty(
119: NamespaceType.OHRM.getURI(), "PREVIEWPAGE");
120: DAVResourceValue val = new DAVResourceValue();
121: val.setValue(valPath);
122: propInst.setValue(val);
123: vFile.sync();
124: }
125: }
126:
127: public static void main(String[] args) {
128: }
129: }
|