|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2003 Sun Microsystems, Inc. All Rights Reserved. */ package org.netbeans.api.nodes2looks; import java.util.*; import java.io.Serializable; import org.openide.nodes.Node; import org.openide.util.Lookup; import org.netbeans.api.nodes2looks.LookNode; import org.netbeans.spi.looks.Look; import org.netbeans.spi.looks.LookSelector; /** Cache that stores and persists mapping between * nodes and their associated look descriptors. * * @author Petr Hrebejk */ final class Cache extends Object implements Serializable, Node.Handle { static final long serialVersionUID = 5338245712342L; private Node.Handle handle; private Map cache = new HashMap(); public Cache() {} public Cache (Node.Handle del) { this.handle = del instanceof Cache ? ((Cache)del).handle : del; } public Node getNode() throws java.io.IOException { Node n = handle.getNode (); if (n instanceof LookNode) { LookNode ln = (LookNode)n; this.handle = ln.getCache().handle; ln.setCache( this ); } return n; } public void store (LookNode node) { org.netbeans.spi.looks.Look ld = node.getLook(); Object ro = node.getRepresentedObject(); String roID = ld.getName( ro, node.getLookup() ); if ( roID == null ) { return; } String nodePath = getLookNodePath( node.getParentNode() ); List items = (List)cache.get( nodePath ); if ( items == null ) { items = new ArrayList(); cache.put( nodePath, items ); } String item[] = { ld.getName(), ro.getClass().getName(), roID}; items.add( item ); } public Look find (LookNode parentNode, Object representedObject ) { String path = getLookNodePath( parentNode ); List items = (List)cache.get( path ); if ( items == null ) { return null; } // findItem( ); HashMap ldName2ld = new HashMap(); for( Iterator it = items.iterator(); it.hasNext(); ) { String[] item = (String[])it.next(); if (!item[1].equals (representedObject.getClass().getName())) { continue; } Look look = LookSelector_getLook ( parentNode.getLookSelectorForChildren(), item[0], representedObject ); if (look == null) { continue; } if (look != null && item[2].equals (look.getName ( representedObject, Lookup.EMPTY ))) { // PENDING return look; } } return null; } // methods to track the state of the tree ---------------------------------- // PENDING to be removed private static Look LookSelector_getLook ( LookSelector ls, String name, Object representedObject ) { Enumeration e = ls.getLooks( representedObject ); while( e.hasMoreElements() ) { Look l = (Look)e.nextElement(); if ( l.getName().equals( name ) ) { return l; } } return null; } private static String getLookNodePath( Node node ) { StringBuffer buf = new StringBuffer (512); for (;;) { if (!(node instanceof LookNode) ) { break; } buf.insert (0, node.getName() ); node = node.getParentNode(); } return buf.toString(); } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.