1*1b0aaa91SAndrew Rist /************************************************************** 2*1b0aaa91SAndrew Rist * 3*1b0aaa91SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1b0aaa91SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1b0aaa91SAndrew Rist * distributed with this work for additional information 6*1b0aaa91SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1b0aaa91SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1b0aaa91SAndrew Rist * "License"); you may not use this file except in compliance 9*1b0aaa91SAndrew Rist * with the License. You may obtain a copy of the License at 10*1b0aaa91SAndrew Rist * 11*1b0aaa91SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*1b0aaa91SAndrew Rist * 13*1b0aaa91SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1b0aaa91SAndrew Rist * software distributed under the License is distributed on an 15*1b0aaa91SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1b0aaa91SAndrew Rist * KIND, either express or implied. See the License for the 17*1b0aaa91SAndrew Rist * specific language governing permissions and limitations 18*1b0aaa91SAndrew Rist * under the License. 19*1b0aaa91SAndrew Rist * 20*1b0aaa91SAndrew Rist *************************************************************/ 21*1b0aaa91SAndrew Rist 22cdf0e10cSrcweir import javax.swing.tree.DefaultTreeCellRenderer; 23cdf0e10cSrcweir import javax.swing.tree.TreePath; 24cdf0e10cSrcweir import javax.swing.JTree; 25cdf0e10cSrcweir import java.awt.Color; 26cdf0e10cSrcweir import java.awt.Component; 27cdf0e10cSrcweir import java.util.Vector; 28cdf0e10cSrcweir 29cdf0e10cSrcweir 30cdf0e10cSrcweir public class AccessibleTreeCellRenderer 31cdf0e10cSrcweir extends DefaultTreeCellRenderer 32cdf0e10cSrcweir { 33cdf0e10cSrcweir public Color 34cdf0e10cSrcweir maDefaultColor, 35cdf0e10cSrcweir maChangedColor; 36cdf0e10cSrcweir protected Vector 37cdf0e10cSrcweir maChangedLines; 38cdf0e10cSrcweir 39cdf0e10cSrcweir 40cdf0e10cSrcweir AccessibleTreeCellRenderer()41cdf0e10cSrcweir public AccessibleTreeCellRenderer () 42cdf0e10cSrcweir { 43cdf0e10cSrcweir maDefaultColor = Color.black; 44cdf0e10cSrcweir maChangedColor = Color.red; 45cdf0e10cSrcweir maChangedLines = new Vector (); 46cdf0e10cSrcweir } 47cdf0e10cSrcweir getTreeCellRendererComponent( JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)48cdf0e10cSrcweir public Component getTreeCellRendererComponent ( 49cdf0e10cSrcweir JTree tree, 50cdf0e10cSrcweir Object value, 51cdf0e10cSrcweir boolean sel, 52cdf0e10cSrcweir boolean expanded, 53cdf0e10cSrcweir boolean leaf, 54cdf0e10cSrcweir int row, 55cdf0e10cSrcweir boolean hasFocus) 56cdf0e10cSrcweir { 57cdf0e10cSrcweir super.getTreeCellRendererComponent( 58cdf0e10cSrcweir tree, value, sel, 59cdf0e10cSrcweir expanded, leaf, row, 60cdf0e10cSrcweir hasFocus); 61cdf0e10cSrcweir 62cdf0e10cSrcweir if (maChangedLines.size()<=row || maChangedLines.elementAt (row) == null) 63cdf0e10cSrcweir setTextNonSelectionColor (maDefaultColor); 64cdf0e10cSrcweir else 65cdf0e10cSrcweir setTextNonSelectionColor (maChangedColor); 66cdf0e10cSrcweir 67cdf0e10cSrcweir return this; 68cdf0e10cSrcweir } 69cdf0e10cSrcweir 70cdf0e10cSrcweir /** Tell the cell renderer that no changes shall be displayed anymore. 71cdf0e10cSrcweir */ clearAllChanges()72cdf0e10cSrcweir public void clearAllChanges () 73cdf0e10cSrcweir { 74cdf0e10cSrcweir maChangedLines.clear(); 75cdf0e10cSrcweir } 76cdf0e10cSrcweir 77cdf0e10cSrcweir /** Inform the cell renderer of a new changed line which to paint 78cdf0e10cSrcweir highlighted when asked to paint it the next time. 79cdf0e10cSrcweir */ addChangedLine(int nRow)80cdf0e10cSrcweir public void addChangedLine (int nRow) 81cdf0e10cSrcweir { 82cdf0e10cSrcweir if (maChangedLines.size() <= nRow) 83cdf0e10cSrcweir maChangedLines.setSize (nRow+1); 84cdf0e10cSrcweir nRow -= 1; // row index is one to large for some reason. 85cdf0e10cSrcweir maChangedLines.set (nRow, new Boolean (true)); 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88cdf0e10cSrcweir /** Inform the cell renderer of a set of changed line which to paint 89cdf0e10cSrcweir highlighted when asked to paint them the next time. 90cdf0e10cSrcweir @param aChangedNodes 91cdf0e10cSrcweir The set of changed nodes. Each entry is a TreePath. 92cdf0e10cSrcweir @param aTree 93cdf0e10cSrcweir The JTree that is used to transform the given TreePath objects 94cdf0e10cSrcweir into rows. 95cdf0e10cSrcweir */ addChangedNodes(Vector aChangedNodes, JTree aTree)96cdf0e10cSrcweir public void addChangedNodes (Vector aChangedNodes, JTree aTree) 97cdf0e10cSrcweir { 98cdf0e10cSrcweir for (int i=0; i<aChangedNodes.size(); i++) 99cdf0e10cSrcweir { 100cdf0e10cSrcweir TreePath aPath = (TreePath)aChangedNodes.elementAt (i); 101cdf0e10cSrcweir int nRow = aTree.getRowForPath (aPath); 102cdf0e10cSrcweir addChangedLine (nRow); 103cdf0e10cSrcweir } 104cdf0e10cSrcweir } 105cdf0e10cSrcweir 106cdf0e10cSrcweir } 107cdf0e10cSrcweir 108