blob: 4562a4cb033ee293b0f910127ab9cea632e5097c [file] [log] [blame]
<HTML><HEAD><META CONTENT="text/html; charset=UTF-8" HTTP-EQUIV="Content-Type"/><TITLE>EMMA Coverage Report</TITLE><STYLE TYPE="text/css"> TABLE,TD,TH {border-style:solid; border-color:black;} TD,TH {background:white;margin:0;line-height:100%;padding-left:0.5em;padding-right:0.5em;} TD {border-width:0 1px 0 0;} TH {border-width:1px 1px 1px 0;} TR TD.h {color:red;} TABLE {border-spacing:0; border-collapse:collapse;border-width:0 0 1px 1px;} P,H1,H2,H3,TH {font-family:verdana,arial,sans-serif;font-size:10pt;} TD {font-family:courier,monospace;font-size:10pt;} TABLE.hdft {border-spacing:0;border-collapse:collapse;border-style:none;} TABLE.hdft TH,TABLE.hdft TD {border-style:none;line-height:normal;} TABLE.hdft TH.tl,TABLE.hdft TD.tl {background:#6699CC;color:white;} TABLE.hdft TD.nv {background:#6633DD;color:white;} .nv A:link {color:white;} .nv A:visited {color:white;} .nv A:active {color:yellow;} TABLE.hdft A:link {color:white;} TABLE.hdft A:visited {color:white;} TABLE.hdft A:active {color:yellow;} .in {color:#356085;} TABLE.s TD {padding-left:0.25em;padding-right:0.25em;} TABLE.s TD.l {padding-left:0.25em;padding-right:0.25em;text-align:right;background:#F0F0F0;} TABLE.s TR.z TD {background:#FF9999;} TABLE.s TR.p TD {background:#FFFF88;} TABLE.s TR.c TD {background:#CCFFCC;} A:link {color:#0000EE;text-decoration:none;} A:visited {color:#0000EE;text-decoration:none;} A:hover {color:#0000EE;text-decoration:underline;} TABLE.cn {border-width:0 0 1px 0;} TABLE.s {border-width:1px 0 1px 1px;} TD.h {color:red;border-width:0 1px 0 0;} TD.f {border-width:0 1px 0 1px;} TD.hf {color:red;border-width:0 1px 0 1px;} TH.f {border-width:1px 1px 1px 1px;} TR.cis TD {background:#F0F0F0;} TR.cis TD {border-width:1px 1px 1px 0;} TR.cis TD.h {color:red;border-width:1px 1px 1px 0;} TR.cis TD.f {border-width:1px 1px 1px 1px;} TR.cis TD.hf {color:red;border-width:1px 1px 1px 1px;} TD.b {border-style:none;background:transparent;line-height:50%;} TD.bt {border-width:1px 0 0 0;background:transparent;line-height:50%;} TR.o TD {background:#F0F0F0;}TABLE.it {border-style:none;}TABLE.it TD,TABLE.it TH {border-style:none;}</STYLE></HEAD><BODY><TABLE CLASS="hdft" CELLSPACING="0" WIDTH="100%"><TR><TH CLASS="tl"><A HREF="http://www.eclemma.org/">EMMA</A> Coverage Report (generated Fri Feb 20 18:44:54 GMT 2009)</TH></TR><TR><TD CLASS="nv">[<A HREF="../xslUnitTestCoverage.html">all classes</A>][<A HREF="41.html">org.eclipse.wst.xml.ui.internal.tabletree</A>]</TD></TR></TABLE><H2>COVERAGE SUMMARY FOR SOURCE FILE [<SPAN CLASS="in">TreeExtension.java</SPAN>]</H2><TABLE CELLSPACING="0" WIDTH="100%"><TR><TH>name</TH><TH>class, %</TH><TH>method, %</TH><TH>block, %</TH><TH>line, %</TH></TR><TR><TD>TreeExtension.java</TD><TD CLASS="h">0%   (0/8)</TD><TD CLASS="h">0%   (0/45)</TD><TD CLASS="h">0%   (0/975)</TD><TD CLASS="h">0%   (0/230)</TD></TR></TABLE><H3>COVERAGE BREAKDOWN BY CLASS AND METHOD</H3><TABLE CLASS="cn" CELLSPACING="0" WIDTH="100%"><TR><TH CLASS="f">name</TH><TH>class, %</TH><TH>method, %</TH><TH>block, %</TH><TH>line, %</TH></TR><TR><TD CLASS="b"> </TD><TD CLASS="b"> </TD><TD CLASS="b"> </TD><TD CLASS="b"> </TD><TD CLASS="b"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#0">TreeExtension</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/18)</TD><TD CLASS="h">0%   (0/381)</TD><TD CLASS="h">0%   (0/94)</TD></TR><TR><TD CLASS="f"><A HREF="#0">TreeExtension (Tree): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/49)</TD><TD CLASS="h">0%   (0/13)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2">addEmptyTreeMessage (GC): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#3">addUnableToPopulateTreeMessage (GC): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/20)</TD><TD CLASS="h">0%   (0/4)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#4">computeTreeItemHeight (): int</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/59)</TD><TD CLASS="h">0%   (0/12)</TD></TR><TR><TD CLASS="f"><A HREF="#5">dispose (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#6">getCellModifier (): ICellModifier</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/3)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#7">getColumnProperties (): String []</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/3)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#8">getDisplay (): Display</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/3)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#9">getItemList (): List</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/12)</TD><TD CLASS="h">0%   (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#a">getItemListHelper (TreeItem [], List): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/22)</TD><TD CLASS="h">0%   (0/5)</TD></TR><TR><TD CLASS="f"><A HREF="#b">getTreeItemOnRow (int, int): TreeItem</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/40)</TD><TD CLASS="h">0%   (0/8)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#c">paintControl (PaintEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/111)</TD><TD CLASS="h">0%   (0/24)</TD></TR><TR><TD CLASS="f"><A HREF="#d">paintItem (GC, TreeItem, Rectangle): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#e">paintItems (GC, TreeItem [], Rectangle): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/40)</TD><TD CLASS="h">0%   (0/11)</TD></TR><TR><TD CLASS="f"><A HREF="#f">resetCachedData (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#10">setCellModifier (ICellModifier): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#11">setColumnProperties (String []): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#12">setIsUnsupportedInput (boolean): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#13">TreeExtension$1</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/2)</TD><TD CLASS="h">0%   (0/62)</TD><TD CLASS="h">0%   (0/11)</TD></TR><TR><TD CLASS="f"><A HREF="#13">TreeExtension$1 (TreeExtension$EditManager, Tree): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/9)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#15">mouseDown (MouseEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/53)</TD><TD CLASS="h">0%   (0/9)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#16">TreeExtension$2</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/3)</TD><TD CLASS="h">0%   (0/14)</TD><TD CLASS="h">0%   (0/6)</TD></TR><TR><TD CLASS="f"><A HREF="#16">TreeExtension$2 (TreeExtension$EditManager): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/6)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#18">widgetDefaultSelected (SelectionEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#19">widgetSelected (SelectionEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#1a">TreeExtension$3</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/2)</TD><TD CLASS="h">0%   (0/32)</TD><TD CLASS="h">0%   (0/8)</TD></TR><TR><TD CLASS="f"><A HREF="#1a">TreeExtension$3 (TreeExtension$EditManager, Tree): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/9)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#1c">keyPressed (KeyEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/23)</TD><TD CLASS="h">0%   (0/6)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#1d">TreeExtension$DelayedDrawTimer</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/3)</TD><TD CLASS="h">0%   (0/20)</TD><TD CLASS="h">0%   (0/7)</TD></TR><TR><TD CLASS="f"><A HREF="#1d">TreeExtension$DelayedDrawTimer (TreeExtension, Control): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/9)</TD><TD CLASS="h">0%   (0/3)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#1f">reset (int): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/7)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#20">run (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#21">TreeExtension$EditManager</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/5)</TD><TD CLASS="h">0%   (0/163)</TD><TD CLASS="h">0%   (0/41)</TD></TR><TR><TD CLASS="f"><A HREF="#21">TreeExtension$EditManager (TreeExtension, Tree): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/57)</TD><TD CLASS="h">0%   (0/16)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#23">activateCellEditor (TreeItem, int): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/59)</TD><TD CLASS="h">0%   (0/13)</TD></TR><TR><TD CLASS="f"><A HREF="#24">applyCellEditorValue (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/30)</TD><TD CLASS="h">0%   (0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#25">deactivateCellEditor (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/10)</TD><TD CLASS="h">0%   (0/4)</TD></TR><TR><TD CLASS="f"><A HREF="#26">isCellEditorActive (): boolean</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/7)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#27">TreeExtension$EditManager$CellEditorState</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/8)</TD><TD CLASS="h">0%   (0/141)</TD><TD CLASS="h">0%   (0/36)</TD></TR><TR><TD CLASS="f"><A HREF="#27">TreeExtension$EditManager$CellEditorState (TreeExtension$EditManager, CellEdi...</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/21)</TD><TD CLASS="h">0%   (0/7)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#29">activate (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/89)</TD><TD CLASS="h">0%   (0/16)</TD></TR><TR><TD CLASS="f"><A HREF="#2a">applyEditorValue (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2b">cancelEditor (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="f"><A HREF="#2c">deactivate (): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/17)</TD><TD CLASS="h">0%   (0/5)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2d">editorValueChanged (boolean, boolean): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR><TD CLASS="f"><A HREF="#2e">focusGained (FocusEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/1)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#2f">focusLost (FocusEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR><TR><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD><TD CLASS="bt"> </TD></TR><TR CLASS="cis"><TD CLASS="f">class <A HREF="#30">TreeExtension$InternalMouseListener</A></TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/162)</TD><TD CLASS="h">0%   (0/32)</TD></TR><TR><TD CLASS="f"><A HREF="#30">TreeExtension$InternalMouseListener (TreeExtension): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/18)</TD><TD CLASS="h">0%   (0/5)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#32">mouseDown (MouseEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/67)</TD><TD CLASS="h">0%   (0/12)</TD></TR><TR><TD CLASS="f"><A HREF="#33">mouseMove (MouseEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/73)</TD><TD CLASS="h">0%   (0/13)</TD></TR><TR CLASS="o"><TD CLASS="f"><A HREF="#34">mouseUp (MouseEvent): void</A></TD><TD> </TD><TD CLASS="h">0%   (0/1)</TD><TD CLASS="h">0%   (0/4)</TD><TD CLASS="h">0%   (0/2)</TD></TR></TABLE><P></P><TABLE CLASS="s" CELLSPACING="0" WIDTH="100%"><TR CLASS="z"><TD CLASS="l">1</TD><TD>/*******************************************************************************</TD></TR><TR><TD CLASS="l">2</TD><TD> * Copyright (c) 2004, 2006 IBM Corporation and others.</TD></TR><TR><TD CLASS="l">3</TD><TD> * All rights reserved. This program and the accompanying materials</TD></TR><TR><TD CLASS="l">4</TD><TD> * are made available under the terms of the Eclipse Public License v1.0</TD></TR><TR><TD CLASS="l">5</TD><TD> * which accompanies this distribution, and is available at</TD></TR><TR><TD CLASS="l">6</TD><TD> * http://www.eclipse.org/legal/epl-v10.html</TD></TR><TR><TD CLASS="l">7</TD><TD> *</TD></TR><TR><TD CLASS="l">8</TD><TD> * Contributors:</TD></TR><TR><TD CLASS="l">9</TD><TD> *     IBM Corporation - initial API and implementation</TD></TR><TR><TD CLASS="l">10</TD><TD> *******************************************************************************/</TD></TR><TR><TD CLASS="l">11</TD><TD> </TD></TR><TR><TD CLASS="l">12</TD><TD> </TD></TR><TR><TD CLASS="l">13</TD><TD>package org.eclipse.wst.xml.ui.internal.tabletree;</TD></TR><TR><TD CLASS="l">14</TD><TD> </TD></TR><TR><TD CLASS="l">15</TD><TD>import java.util.Iterator;</TD></TR><TR><TD CLASS="l">16</TD><TD>import java.util.List;</TD></TR><TR><TD CLASS="l">17</TD><TD>import java.util.Vector;</TD></TR><TR><TD CLASS="l">18</TD><TD> </TD></TR><TR><TD CLASS="l">19</TD><TD>import org.eclipse.jface.viewers.CellEditor;</TD></TR><TR><TD CLASS="l">20</TD><TD>import org.eclipse.jface.viewers.ICellEditorListener;</TD></TR><TR><TD CLASS="l">21</TD><TD>import org.eclipse.jface.viewers.ICellModifier;</TD></TR><TR><TD CLASS="l">22</TD><TD>import org.eclipse.swt.SWT;</TD></TR><TR><TD CLASS="l">23</TD><TD>import org.eclipse.swt.events.FocusEvent;</TD></TR><TR><TD CLASS="l">24</TD><TD>import org.eclipse.swt.events.FocusListener;</TD></TR><TR><TD CLASS="l">25</TD><TD>import org.eclipse.swt.events.KeyAdapter;</TD></TR><TR><TD CLASS="l">26</TD><TD>import org.eclipse.swt.events.KeyEvent;</TD></TR><TR><TD CLASS="l">27</TD><TD>import org.eclipse.swt.events.KeyListener;</TD></TR><TR><TD CLASS="l">28</TD><TD>import org.eclipse.swt.events.MouseAdapter;</TD></TR><TR><TD CLASS="l">29</TD><TD>import org.eclipse.swt.events.MouseEvent;</TD></TR><TR><TD CLASS="l">30</TD><TD>import org.eclipse.swt.events.MouseMoveListener;</TD></TR><TR><TD CLASS="l">31</TD><TD>import org.eclipse.swt.events.PaintEvent;</TD></TR><TR><TD CLASS="l">32</TD><TD>import org.eclipse.swt.events.PaintListener;</TD></TR><TR><TD CLASS="l">33</TD><TD>import org.eclipse.swt.events.SelectionEvent;</TD></TR><TR><TD CLASS="l">34</TD><TD>import org.eclipse.swt.events.SelectionListener;</TD></TR><TR><TD CLASS="l">35</TD><TD>import org.eclipse.swt.graphics.Color;</TD></TR><TR><TD CLASS="l">36</TD><TD>import org.eclipse.swt.graphics.Cursor;</TD></TR><TR><TD CLASS="l">37</TD><TD>import org.eclipse.swt.graphics.GC;</TD></TR><TR><TD CLASS="l">38</TD><TD>import org.eclipse.swt.graphics.Point;</TD></TR><TR><TD CLASS="l">39</TD><TD>import org.eclipse.swt.graphics.Rectangle;</TD></TR><TR><TD CLASS="l">40</TD><TD>import org.eclipse.swt.widgets.Composite;</TD></TR><TR><TD CLASS="l">41</TD><TD>import org.eclipse.swt.widgets.Control;</TD></TR><TR><TD CLASS="l">42</TD><TD>import org.eclipse.swt.widgets.Display;</TD></TR><TR><TD CLASS="l">43</TD><TD>import org.eclipse.swt.widgets.ScrollBar;</TD></TR><TR><TD CLASS="l">44</TD><TD>import org.eclipse.swt.widgets.Text;</TD></TR><TR><TD CLASS="l">45</TD><TD>import org.eclipse.swt.widgets.Tree;</TD></TR><TR><TD CLASS="l">46</TD><TD>import org.eclipse.swt.widgets.TreeItem;</TD></TR><TR><TD CLASS="l">47</TD><TD>import org.eclipse.ui.PlatformUI;</TD></TR><TR><TD CLASS="l">48</TD><TD> </TD></TR><TR><TD CLASS="l">49</TD><TD> </TD></TR><TR><TD CLASS="l">50</TD><TD>public class TreeExtension implements PaintListener {</TD></TR><TR><TD CLASS="l">51</TD><TD> </TD></TR><TR><TD CLASS="l">52</TD><TD>        protected Tree fTree;</TD></TR><TR><TD CLASS="l">53</TD><TD>        protected EditManager editManager;</TD></TR><TR><TD CLASS="l">54</TD><TD>        protected String[] fColumnProperties;</TD></TR><TR><TD CLASS="l">55</TD><TD>        protected ICellModifier cellModifier;</TD></TR><TR CLASS="z"><TD CLASS="l">56</TD><TD>        protected int columnPosition = 300;</TD></TR><TR CLASS="z"><TD CLASS="l">57</TD><TD>        protected int columnHitWidth = 5;</TD></TR><TR><TD CLASS="l">58</TD><TD>        protected Color tableLineColor;</TD></TR><TR><TD CLASS="l"><A NAME="0">59</A></TD><TD>        protected int controlWidth;</TD></TR><TR><TD CLASS="l">60</TD><TD>        protected DelayedDrawTimer delayedDrawTimer;</TD></TR><TR CLASS="z"><TD CLASS="l">61</TD><TD>        private boolean fisUnsupportedInput = false;</TD></TR><TR><TD CLASS="l">62</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">63</TD><TD>        public TreeExtension(Tree tree) {</TD></TR><TR CLASS="z"><TD CLASS="l">64</TD><TD>                this.fTree = tree;</TD></TR><TR CLASS="z"><TD CLASS="l">65</TD><TD>                InternalMouseListener listener = new InternalMouseListener();</TD></TR><TR CLASS="z"><TD CLASS="l">66</TD><TD>                tree.addMouseMoveListener(listener);</TD></TR><TR CLASS="z"><TD CLASS="l">67</TD><TD>                tree.addMouseListener(listener);</TD></TR><TR CLASS="z"><TD CLASS="l">68</TD><TD>                tree.addPaintListener(this);</TD></TR><TR CLASS="z"><TD CLASS="l">69</TD><TD>                editManager = new EditManager(tree);</TD></TR><TR CLASS="z"><TD CLASS="l">70</TD><TD>                delayedDrawTimer = new DelayedDrawTimer(tree);</TD></TR><TR><TD CLASS="l">71</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="5">72</A></TD><TD>                tableLineColor = tree.getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW);</TD></TR><TR CLASS="z"><TD CLASS="l">73</TD><TD>        }</TD></TR><TR><TD CLASS="l">74</TD><TD> </TD></TR><TR><TD CLASS="l">75</TD><TD>        public void dispose() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="10">76</A></TD><TD>                tableLineColor.dispose();</TD></TR><TR CLASS="z"><TD CLASS="l">77</TD><TD>        }</TD></TR><TR><TD CLASS="l">78</TD><TD> </TD></TR><TR><TD CLASS="l">79</TD><TD>        public void setCellModifier(ICellModifier modifier) {</TD></TR><TR CLASS="z"><TD CLASS="l">80</TD><TD>                cellModifier = modifier;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="f">81</A></TD><TD>        }</TD></TR><TR><TD CLASS="l">82</TD><TD> </TD></TR><TR><TD CLASS="l">83</TD><TD>        public void resetCachedData() {</TD></TR><TR><TD CLASS="l"><A NAME="6">84</A></TD><TD>                // todo: sure seems we should reset something?</TD></TR><TR CLASS="z"><TD CLASS="l">85</TD><TD>        }</TD></TR><TR><TD CLASS="l">86</TD><TD> </TD></TR><TR><TD CLASS="l">87</TD><TD>        public ICellModifier getCellModifier() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="9">88</A></TD><TD>                return cellModifier;</TD></TR><TR><TD CLASS="l">89</TD><TD>        }</TD></TR><TR><TD CLASS="l">90</TD><TD> </TD></TR><TR><TD CLASS="l">91</TD><TD>        public List getItemList() {</TD></TR><TR CLASS="z"><TD CLASS="l">92</TD><TD>                List list = new Vector();</TD></TR><TR CLASS="z"><TD CLASS="l">93</TD><TD>                getItemListHelper(fTree.getItems(), list);</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="a">94</A></TD><TD>                return list;</TD></TR><TR><TD CLASS="l">95</TD><TD>        }</TD></TR><TR><TD CLASS="l">96</TD><TD> </TD></TR><TR><TD CLASS="l">97</TD><TD>        protected void getItemListHelper(TreeItem[] items, List list) {</TD></TR><TR CLASS="z"><TD CLASS="l">98</TD><TD>                for (int i = 0; i &lt; items.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">99</TD><TD>                        TreeItem item = items[i];</TD></TR><TR CLASS="z"><TD CLASS="l">100</TD><TD>                        list.add(item);</TD></TR><TR CLASS="z"><TD CLASS="l">101</TD><TD>                        getItemListHelper(item.getItems(), list);</TD></TR><TR><TD CLASS="l"><A NAME="b">102</A></TD><TD>                }</TD></TR><TR CLASS="z"><TD CLASS="l">103</TD><TD>        }</TD></TR><TR><TD CLASS="l">104</TD><TD> </TD></TR><TR><TD CLASS="l">105</TD><TD>        protected TreeItem getTreeItemOnRow(int px, int py) {</TD></TR><TR CLASS="z"><TD CLASS="l">106</TD><TD>                TreeItem result = null;</TD></TR><TR CLASS="z"><TD CLASS="l">107</TD><TD>                List list = getItemList();</TD></TR><TR CLASS="z"><TD CLASS="l">108</TD><TD>                for (Iterator i = list.iterator(); i.hasNext();) {</TD></TR><TR CLASS="z"><TD CLASS="l">109</TD><TD>                        TreeItem item = (TreeItem) i.next();</TD></TR><TR CLASS="z"><TD CLASS="l">110</TD><TD>                        Rectangle r = item.getBounds();</TD></TR><TR CLASS="z"><TD CLASS="l">111</TD><TD>                        if ((r != null) &amp;&amp; (px &gt;= r.x) &amp;&amp; (py &gt;= r.y) &amp;&amp; (py &lt;= r.y + r.height)) {</TD></TR><TR CLASS="z"><TD CLASS="l">112</TD><TD>                                result = item;</TD></TR><TR><TD CLASS="l">113</TD><TD>                        }</TD></TR><TR><TD CLASS="l"><A NAME="30">114</A></TD><TD>                }</TD></TR><TR CLASS="z"><TD CLASS="l">115</TD><TD>                return result;</TD></TR><TR><TD CLASS="l">116</TD><TD>        }</TD></TR><TR><TD CLASS="l">117</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">118</TD><TD>        protected class InternalMouseListener extends MouseAdapter implements MouseMoveListener {</TD></TR><TR CLASS="z"><TD CLASS="l">119</TD><TD>                protected int columnDragged = -1;</TD></TR><TR CLASS="z"><TD CLASS="l">120</TD><TD>                protected boolean isDown = false;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="33">121</A></TD><TD>                protected int prevX = -1;</TD></TR><TR CLASS="z"><TD CLASS="l">122</TD><TD>                protected Cursor cursor = null;</TD></TR><TR><TD CLASS="l">123</TD><TD> </TD></TR><TR><TD CLASS="l">124</TD><TD>                public void mouseMove(MouseEvent e) {</TD></TR><TR CLASS="z"><TD CLASS="l">125</TD><TD>                        if ((e.x &gt; columnPosition - columnHitWidth) &amp;&amp; (e.x &lt; columnPosition + columnHitWidth)) {</TD></TR><TR CLASS="z"><TD CLASS="l">126</TD><TD>                                if (cursor == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">127</TD><TD>                                        cursor = new Cursor(fTree.getDisplay(), SWT.CURSOR_SIZEWE);</TD></TR><TR CLASS="z"><TD CLASS="l">128</TD><TD>                                        fTree.setCursor(cursor);</TD></TR><TR><TD CLASS="l">129</TD><TD>                                }</TD></TR><TR><TD CLASS="l">130</TD><TD>                        }</TD></TR><TR><TD CLASS="l">131</TD><TD>                        else {</TD></TR><TR CLASS="z"><TD CLASS="l">132</TD><TD>                                if (cursor != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">133</TD><TD>                                        fTree.setCursor(null);</TD></TR><TR CLASS="z"><TD CLASS="l">134</TD><TD>                                        cursor.dispose();</TD></TR><TR CLASS="z"><TD CLASS="l">135</TD><TD>                                        cursor = null;</TD></TR><TR><TD CLASS="l">136</TD><TD>                                }</TD></TR><TR><TD CLASS="l">137</TD><TD>                        }</TD></TR><TR><TD CLASS="l">138</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">139</TD><TD>                        if (columnDragged != -1) {</TD></TR><TR><TD CLASS="l">140</TD><TD>                                // using the delay timer will make redraws less flickery</TD></TR><TR CLASS="z"><TD CLASS="l">141</TD><TD>                                if (e.x &gt; 20) {</TD></TR><TR CLASS="z"><TD CLASS="l">142</TD><TD>                                        columnPosition = e.x;</TD></TR><TR CLASS="z"><TD CLASS="l">143</TD><TD>                                        delayedDrawTimer.reset(20);</TD></TR><TR><TD CLASS="l">144</TD><TD>                                }</TD></TR><TR><TD CLASS="l">145</TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l">146</TD><TD>                }</TD></TR><TR><TD CLASS="l">147</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="32">148</A></TD><TD>                public void mouseDown(MouseEvent e) {</TD></TR><TR><TD CLASS="l">149</TD><TD>                        // here we handle the column resizing by detect if the user has</TD></TR><TR><TD CLASS="l">150</TD><TD>                        // click on a column separator</TD></TR><TR><TD CLASS="l">151</TD><TD>                        //</TD></TR><TR CLASS="z"><TD CLASS="l">152</TD><TD>                        columnDragged = -1;</TD></TR><TR CLASS="z"><TD CLASS="l">153</TD><TD>                        editManager.deactivateCellEditor();</TD></TR><TR><TD CLASS="l">154</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">155</TD><TD>                        if ((e.x &gt; columnPosition - columnHitWidth) &amp;&amp; (e.x &lt; columnPosition + columnHitWidth)) {</TD></TR><TR CLASS="z"><TD CLASS="l">156</TD><TD>                                columnDragged = 0;</TD></TR><TR><TD CLASS="l">157</TD><TD>                        }</TD></TR><TR><TD CLASS="l">158</TD><TD> </TD></TR><TR><TD CLASS="l">159</TD><TD>                        // here we handle selecting tree items when any thing on the 'row'</TD></TR><TR><TD CLASS="l">160</TD><TD>                        // is clicked</TD></TR><TR><TD CLASS="l">161</TD><TD>                        //</TD></TR><TR CLASS="z"><TD CLASS="l">162</TD><TD>                        TreeItem item = fTree.getItem(new Point(e.x, e.y));</TD></TR><TR CLASS="z"><TD CLASS="l">163</TD><TD>                        if (item == null) {</TD></TR><TR CLASS="z"><TD CLASS="l">164</TD><TD>                                item = getTreeItemOnRow(e.x, e.y);</TD></TR><TR CLASS="z"><TD CLASS="l">165</TD><TD>                                if (item != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">166</TD><TD>                                        TreeItem[] items = new TreeItem[1];</TD></TR><TR CLASS="z"><TD CLASS="l">167</TD><TD>                                        items[0] = item;</TD></TR><TR CLASS="z"><TD CLASS="l">168</TD><TD>                                        fTree.setSelection(items);</TD></TR><TR><TD CLASS="l">169</TD><TD>                                }</TD></TR><TR><TD CLASS="l"><A NAME="34">170</A></TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l">171</TD><TD>                }</TD></TR><TR><TD CLASS="l">172</TD><TD> </TD></TR><TR><TD CLASS="l">173</TD><TD>                public void mouseUp(MouseEvent e) {</TD></TR><TR CLASS="z"><TD CLASS="l">174</TD><TD>                        columnDragged = -1;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="7">175</A></TD><TD>                }</TD></TR><TR><TD CLASS="l">176</TD><TD>        }</TD></TR><TR><TD CLASS="l">177</TD><TD> </TD></TR><TR><TD CLASS="l">178</TD><TD>        public String[] getColumnProperties() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="11">179</A></TD><TD>                return fColumnProperties;</TD></TR><TR><TD CLASS="l">180</TD><TD>        }</TD></TR><TR><TD CLASS="l">181</TD><TD> </TD></TR><TR><TD CLASS="l">182</TD><TD>        public void setColumnProperties(String[] columnProperties) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="c">183</A></TD><TD>                this.fColumnProperties = columnProperties;</TD></TR><TR CLASS="z"><TD CLASS="l">184</TD><TD>        }</TD></TR><TR><TD CLASS="l">185</TD><TD> </TD></TR><TR><TD CLASS="l">186</TD><TD>        public void paintControl(PaintEvent event) {</TD></TR><TR CLASS="z"><TD CLASS="l">187</TD><TD>                GC gc = event.gc;</TD></TR><TR CLASS="z"><TD CLASS="l">188</TD><TD>                Rectangle treeBounds = fTree.getBounds();</TD></TR><TR><TD CLASS="l">189</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">190</TD><TD>                controlWidth = treeBounds.width;</TD></TR><TR CLASS="z"><TD CLASS="l">191</TD><TD>                Color bg = fTree.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);</TD></TR><TR CLASS="z"><TD CLASS="l">192</TD><TD>                Color bg2 = fTree.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);</TD></TR><TR><TD CLASS="l">193</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">194</TD><TD>                gc.setBackground(bg2);</TD></TR><TR><TD CLASS="l">195</TD><TD> </TD></TR><TR><TD CLASS="l">196</TD><TD>                // // This next part causes problems on LINUX, so let's not do it</TD></TR><TR><TD CLASS="l">197</TD><TD>                // there</TD></TR><TR><TD CLASS="l">198</TD><TD>                // if (B2BHacks.IS_UNIX == false) {</TD></TR><TR><TD CLASS="l">199</TD><TD>                // TreeItem[] selectedItems = tree.getSelection();</TD></TR><TR><TD CLASS="l">200</TD><TD>                // if (selectedItems.length &gt; 0) {</TD></TR><TR><TD CLASS="l">201</TD><TD>                // for (int i = 0; i &lt; selectedItems.length; i++) {</TD></TR><TR><TD CLASS="l">202</TD><TD>                // TreeItem item = selectedItems[i];</TD></TR><TR><TD CLASS="l">203</TD><TD>                // Rectangle bounds = item.getBounds();</TD></TR><TR><TD CLASS="l">204</TD><TD>                // if (bounds != null) {</TD></TR><TR><TD CLASS="l">205</TD><TD>                // gc.fillRectangle(bounds.x + bounds.width, bounds.y, controlWidth,</TD></TR><TR><TD CLASS="l">206</TD><TD>                // bounds.height);</TD></TR><TR><TD CLASS="l">207</TD><TD>                // }</TD></TR><TR><TD CLASS="l">208</TD><TD>                // }</TD></TR><TR><TD CLASS="l">209</TD><TD>                // }</TD></TR><TR><TD CLASS="l">210</TD><TD>                // }</TD></TR><TR><TD CLASS="l">211</TD><TD>                //</TD></TR><TR CLASS="z"><TD CLASS="l">212</TD><TD>                if (!fisUnsupportedInput) {</TD></TR><TR CLASS="z"><TD CLASS="l">213</TD><TD>                        TreeItem[] items = fTree.getItems();</TD></TR><TR CLASS="z"><TD CLASS="l">214</TD><TD>                        if (items.length &gt; 0) {</TD></TR><TR CLASS="z"><TD CLASS="l">215</TD><TD>                                gc.setForeground(tableLineColor);</TD></TR><TR CLASS="z"><TD CLASS="l">216</TD><TD>                                gc.setBackground(bg);</TD></TR><TR><TD CLASS="l">217</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">218</TD><TD>                                gc.fillRectangle(columnPosition, treeBounds.x, treeBounds.width, treeBounds.height);</TD></TR><TR><TD CLASS="l">219</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">220</TD><TD>                                Rectangle itemBounds = items[0].getBounds();</TD></TR><TR CLASS="z"><TD CLASS="l">221</TD><TD>                                int height = computeTreeItemHeight();</TD></TR><TR><TD CLASS="l">222</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">223</TD><TD>                                if (itemBounds != null) {</TD></TR><TR><TD CLASS="l">224</TD><TD>                                        /*</TD></TR><TR><TD CLASS="l">225</TD><TD>                                         * Bounds will be for the first item, which will either be</TD></TR><TR><TD CLASS="l">226</TD><TD>                                         * visible at the top of the Tree, or scrolled off with</TD></TR><TR><TD CLASS="l">227</TD><TD>                                         * negative values</TD></TR><TR><TD CLASS="l">228</TD><TD>                                         */</TD></TR><TR CLASS="z"><TD CLASS="l">229</TD><TD>                                        int startY = itemBounds.y;</TD></TR><TR><TD CLASS="l">230</TD><TD> </TD></TR><TR><TD CLASS="l">231</TD><TD>                                        /* Only draw lines within the Tree boundaries */</TD></TR><TR CLASS="z"><TD CLASS="l">232</TD><TD>                                        for (int i = startY; i &lt; treeBounds.height; i += height) {</TD></TR><TR CLASS="z"><TD CLASS="l">233</TD><TD>                                                if (i &gt;= treeBounds.y) {</TD></TR><TR CLASS="z"><TD CLASS="l">234</TD><TD>                                                        gc.drawLine(0, i, treeBounds.width, i);</TD></TR><TR><TD CLASS="l">235</TD><TD>                                                }</TD></TR><TR><TD CLASS="l">236</TD><TD>                                        }</TD></TR><TR><TD CLASS="l">237</TD><TD>                                }</TD></TR><TR CLASS="z"><TD CLASS="l">238</TD><TD>                                gc.drawLine(columnPosition, 0, columnPosition, treeBounds.height);</TD></TR><TR CLASS="z"><TD CLASS="l">239</TD><TD>                                paintItems(gc, items, treeBounds);</TD></TR><TR><TD CLASS="l">240</TD><TD> </TD></TR><TR><TD CLASS="l">241</TD><TD>                        }</TD></TR><TR><TD CLASS="l">242</TD><TD>                        else {</TD></TR><TR CLASS="z"><TD CLASS="l">243</TD><TD>                                addEmptyTreeMessage(gc);</TD></TR><TR><TD CLASS="l">244</TD><TD>                        }</TD></TR><TR><TD CLASS="l">245</TD><TD>                }</TD></TR><TR><TD CLASS="l">246</TD><TD>                else {</TD></TR><TR CLASS="z"><TD CLASS="l">247</TD><TD>                        addUnableToPopulateTreeMessage(gc);</TD></TR><TR><TD CLASS="l"><A NAME="4">248</A></TD><TD>                }</TD></TR><TR CLASS="z"><TD CLASS="l">249</TD><TD>        }</TD></TR><TR><TD CLASS="l">250</TD><TD> </TD></TR><TR><TD CLASS="l">251</TD><TD>        protected int computeTreeItemHeight() {</TD></TR><TR CLASS="z"><TD CLASS="l">252</TD><TD>                int result = -1;</TD></TR><TR><TD CLASS="l">253</TD><TD> </TD></TR><TR><TD CLASS="l">254</TD><TD>                /*</TD></TR><TR><TD CLASS="l">255</TD><TD>                 * On GTK tree.getItemHeight() seems to lie to us. It reports that the</TD></TR><TR><TD CLASS="l">256</TD><TD>                 * tree item occupies a few pixles less vertical space than it should</TD></TR><TR><TD CLASS="l">257</TD><TD>                 * (possibly because of the image height vs. the text height?). This</TD></TR><TR><TD CLASS="l">258</TD><TD>                 * foils our code that draws the 'row' lines since we assume that</TD></TR><TR><TD CLASS="l">259</TD><TD>                 * lines should be drawn at 'itemHeight' increments. Don't trust</TD></TR><TR><TD CLASS="l">260</TD><TD>                 * getItemHeight() to compute the increment... instead compute the</TD></TR><TR><TD CLASS="l">261</TD><TD>                 * value based on distance between two TreeItems, and then use the</TD></TR><TR><TD CLASS="l">262</TD><TD>                 * larger value.</TD></TR><TR><TD CLASS="l">263</TD><TD>                 * </TD></TR><TR><TD CLASS="l">264</TD><TD>                 * This strategy only works on trees where the items are of even</TD></TR><TR><TD CLASS="l">265</TD><TD>                 * height, however bug</TD></TR><TR><TD CLASS="l">266</TD><TD>                 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=117201 indicates that</TD></TR><TR><TD CLASS="l">267</TD><TD>                 * this is no longer promised, at least on win32 and likely on other</TD></TR><TR><TD CLASS="l">268</TD><TD>                 * platforms soon.</TD></TR><TR><TD CLASS="l">269</TD><TD>                 */</TD></TR><TR CLASS="z"><TD CLASS="l">270</TD><TD>                if (fTree.getItemCount() &gt; 0) {</TD></TR><TR CLASS="z"><TD CLASS="l">271</TD><TD>                        TreeItem[] items = fTree.getItems();</TD></TR><TR CLASS="z"><TD CLASS="l">272</TD><TD>                        Rectangle itemBounds = items[0].getBounds();</TD></TR><TR><TD CLASS="l">273</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">274</TD><TD>                        if (items[0].getExpanded()) {</TD></TR><TR CLASS="z"><TD CLASS="l">275</TD><TD>                                TreeItem[] children = items[0].getItems();</TD></TR><TR CLASS="z"><TD CLASS="l">276</TD><TD>                                if (children.length &gt; 0) {</TD></TR><TR CLASS="z"><TD CLASS="l">277</TD><TD>                                        result = children[0].getBounds().y - itemBounds.y;</TD></TR><TR><TD CLASS="l">278</TD><TD>                                }</TD></TR><TR><TD CLASS="l">279</TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l">280</TD><TD>                        else if (items.length &gt; 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">281</TD><TD>                                result = items[1].getBounds().y - itemBounds.y;</TD></TR><TR><TD CLASS="l">282</TD><TD>                        }</TD></TR><TR><TD CLASS="l">283</TD><TD>                }</TD></TR><TR><TD CLASS="l">284</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">285</TD><TD>                result = Math.max(fTree.getItemHeight(), result);</TD></TR><TR CLASS="z"><TD CLASS="l">286</TD><TD>                return result;</TD></TR><TR><TD CLASS="l"><A NAME="2">287</A></TD><TD>        }</TD></TR><TR><TD CLASS="l">288</TD><TD> </TD></TR><TR><TD CLASS="l">289</TD><TD>        protected void addEmptyTreeMessage(GC gc) {</TD></TR><TR><TD CLASS="l">290</TD><TD>                // nothing to add here</TD></TR><TR CLASS="z"><TD CLASS="l">291</TD><TD>        }</TD></TR><TR><TD CLASS="l">292</TD><TD> </TD></TR><TR><TD CLASS="l">293</TD><TD>        private void addUnableToPopulateTreeMessage(GC gc) {</TD></TR><TR><TD CLASS="l"><A NAME="3">294</A></TD><TD>                // here we print a message when the document cannot be displayed just</TD></TR><TR><TD CLASS="l">295</TD><TD>                // to give the</TD></TR><TR><TD CLASS="l">296</TD><TD>                // user a visual cue</TD></TR><TR><TD CLASS="l">297</TD><TD>                // so that they know how to proceed to edit the blank view</TD></TR><TR CLASS="z"><TD CLASS="l">298</TD><TD>                gc.setForeground(fTree.getDisplay().getSystemColor(SWT.COLOR_BLACK));</TD></TR><TR CLASS="z"><TD CLASS="l">299</TD><TD>                gc.setBackground(fTree.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="12">300</A></TD><TD>                gc.drawString(XMLEditorMessages.TreeExtension_0, 10, 10);</TD></TR><TR CLASS="z"><TD CLASS="l">301</TD><TD>        }</TD></TR><TR><TD CLASS="l">302</TD><TD> </TD></TR><TR><TD CLASS="l">303</TD><TD>        void setIsUnsupportedInput(boolean isUnsupported) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="e">304</A></TD><TD>                fisUnsupportedInput = isUnsupported;</TD></TR><TR CLASS="z"><TD CLASS="l">305</TD><TD>        }</TD></TR><TR><TD CLASS="l">306</TD><TD> </TD></TR><TR><TD CLASS="l">307</TD><TD>        public void paintItems(GC gc, TreeItem[] items, Rectangle treeBounds) {</TD></TR><TR CLASS="z"><TD CLASS="l">308</TD><TD>                if (items != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">309</TD><TD>                        for (int i = 0; i &lt; items.length; i++) {</TD></TR><TR CLASS="z"><TD CLASS="l">310</TD><TD>                                TreeItem item = items[i];</TD></TR><TR CLASS="z"><TD CLASS="l">311</TD><TD>                                if (item != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">312</TD><TD>                                        Rectangle bounds = item.getBounds();</TD></TR><TR CLASS="z"><TD CLASS="l">313</TD><TD>                                        if (bounds != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">314</TD><TD>                                                if (treeBounds.intersects(bounds)) {</TD></TR><TR CLASS="z"><TD CLASS="l">315</TD><TD>                                                        paintItem(gc, item, bounds);</TD></TR><TR><TD CLASS="l">316</TD><TD>                                                }</TD></TR><TR><TD CLASS="l">317</TD><TD>                                        }</TD></TR><TR><TD CLASS="l">318</TD><TD> </TD></TR><TR><TD CLASS="l">319</TD><TD>                                        // defect 241039</TD></TR><TR><TD CLASS="l">320</TD><TD>                                        //</TD></TR><TR CLASS="z"><TD CLASS="l">321</TD><TD>                                        if (item.getExpanded()) {</TD></TR><TR CLASS="z"><TD CLASS="l">322</TD><TD>                                                paintItems(gc, item.getItems(), treeBounds);</TD></TR><TR><TD CLASS="l">323</TD><TD>                                        }</TD></TR><TR><TD CLASS="l">324</TD><TD>                                }</TD></TR><TR><TD CLASS="l">325</TD><TD>                        }</TD></TR><TR><TD CLASS="l">326</TD><TD>                }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="d">327</A></TD><TD>        }</TD></TR><TR><TD CLASS="l">328</TD><TD> </TD></TR><TR><TD CLASS="l">329</TD><TD>        protected void paintItem(GC gc, TreeItem item, Rectangle bounds) {</TD></TR><TR><TD CLASS="l">330</TD><TD>                // nothing to paint</TD></TR><TR CLASS="z"><TD CLASS="l">331</TD><TD>        }</TD></TR><TR><TD CLASS="l">332</TD><TD> </TD></TR><TR><TD CLASS="l">333</TD><TD>        public interface ICellEditorProvider {</TD></TR><TR><TD CLASS="l">334</TD><TD>                CellEditor getCellEditor(Object o, int col);</TD></TR><TR><TD CLASS="l">335</TD><TD>        }</TD></TR><TR><TD CLASS="l">336</TD><TD> </TD></TR><TR><TD CLASS="l">337</TD><TD>        /**</TD></TR><TR><TD CLASS="l">338</TD><TD>         * This class is used to improve drawing during a column resize.</TD></TR><TR><TD CLASS="l"><A NAME="1d">339</A></TD><TD>         */</TD></TR><TR><TD CLASS="l">340</TD><TD>        public class DelayedDrawTimer implements Runnable {</TD></TR><TR><TD CLASS="l">341</TD><TD>                protected Control control;</TD></TR><TR><TD CLASS="l">342</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">343</TD><TD>                public DelayedDrawTimer(Control control1) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="1f">344</A></TD><TD>                        this.control = control1;</TD></TR><TR CLASS="z"><TD CLASS="l">345</TD><TD>                }</TD></TR><TR><TD CLASS="l">346</TD><TD> </TD></TR><TR><TD CLASS="l">347</TD><TD>                public void reset(int milliseconds) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="20">348</A></TD><TD>                        getDisplay().timerExec(milliseconds, this);</TD></TR><TR CLASS="z"><TD CLASS="l">349</TD><TD>                }</TD></TR><TR><TD CLASS="l">350</TD><TD> </TD></TR><TR><TD CLASS="l">351</TD><TD>                public void run() {</TD></TR><TR CLASS="z"><TD CLASS="l">352</TD><TD>                        control.redraw();</TD></TR><TR CLASS="z"><TD CLASS="l">353</TD><TD>                }</TD></TR><TR><TD CLASS="l"><A NAME="8">354</A></TD><TD>        }</TD></TR><TR><TD CLASS="l">355</TD><TD> </TD></TR><TR><TD CLASS="l">356</TD><TD>        Display getDisplay() {</TD></TR><TR><TD CLASS="l">357</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">358</TD><TD>                return PlatformUI.getWorkbench().getDisplay();</TD></TR><TR><TD CLASS="l">359</TD><TD>        }</TD></TR><TR><TD CLASS="l">360</TD><TD> </TD></TR><TR><TD CLASS="l">361</TD><TD>        /**</TD></TR><TR><TD CLASS="l">362</TD><TD>         * EditManager</TD></TR><TR><TD CLASS="l">363</TD><TD>         */</TD></TR><TR><TD CLASS="l">364</TD><TD>        public class EditManager {</TD></TR><TR><TD CLASS="l"><A NAME="21">365</A></TD><TD>                protected Tree fTree1;</TD></TR><TR><TD CLASS="l">366</TD><TD>                protected Control cellEditorHolder;</TD></TR><TR><TD CLASS="l">367</TD><TD>                protected CellEditorState cellEditorState;</TD></TR><TR><TD CLASS="l">368</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">369</TD><TD>                public EditManager(Tree tree) {</TD></TR><TR CLASS="z"><TD CLASS="l">370</TD><TD>                        this.fTree1 = tree;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="13">371</A></TD><TD>                        this.cellEditorHolder = new Composite(tree, SWT.NONE);</TD></TR><TR><TD CLASS="l">372</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">373</TD><TD>                        final Tree theTree = tree;</TD></TR><TR><TD CLASS="l">374</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">375</TD><TD>                        MouseAdapter theMouseAdapter = new MouseAdapter() {</TD></TR><TR><TD CLASS="l">376</TD><TD>                                public void mouseDown(MouseEvent e) {</TD></TR><TR CLASS="z"><TD CLASS="l">377</TD><TD>                                        deactivateCellEditor();</TD></TR><TR><TD CLASS="l">378</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">379</TD><TD>                                        if (e.x &gt; columnPosition + columnHitWidth) {</TD></TR><TR CLASS="z"><TD CLASS="l">380</TD><TD>                                                TreeItem[] items = theTree.getSelection();</TD></TR><TR><TD CLASS="l">381</TD><TD>                                                // No edit if more than one row is selected.</TD></TR><TR CLASS="z"><TD CLASS="l">382</TD><TD>                                                if (items.length == 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">383</TD><TD>                                                        Rectangle bounds = items[0].getBounds();</TD></TR><TR CLASS="z"><TD CLASS="l">384</TD><TD>                                                        if ((bounds != null) &amp;&amp; (e.y &gt;= bounds.y) &amp;&amp; (e.y &lt;= bounds.y + bounds.height)) {</TD></TR><TR CLASS="z"><TD CLASS="l">385</TD><TD>                                                                int columnToEdit = 1;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="15">386</A></TD><TD>                                                                activateCellEditor(items[0], columnToEdit);</TD></TR><TR><TD CLASS="l">387</TD><TD>                                                        }</TD></TR><TR><TD CLASS="l">388</TD><TD>                                                }</TD></TR><TR><TD CLASS="l"><A NAME="16">389</A></TD><TD>                                        }</TD></TR><TR CLASS="z"><TD CLASS="l">390</TD><TD>                                }</TD></TR><TR><TD CLASS="l">391</TD><TD>                        };</TD></TR><TR><TD CLASS="l"><A NAME="18">392</A></TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">393</TD><TD>                        SelectionListener selectionListener = new SelectionListener() {</TD></TR><TR><TD CLASS="l">394</TD><TD>                                public void widgetDefaultSelected(SelectionEvent e) {</TD></TR><TR CLASS="z"><TD CLASS="l">395</TD><TD>                                        applyCellEditorValue();</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="19">396</A></TD><TD>                                }</TD></TR><TR><TD CLASS="l">397</TD><TD> </TD></TR><TR><TD CLASS="l">398</TD><TD>                                public void widgetSelected(SelectionEvent e) {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="1a">399</A></TD><TD>                                        applyCellEditorValue();</TD></TR><TR CLASS="z"><TD CLASS="l">400</TD><TD>                                }</TD></TR><TR><TD CLASS="l"><A NAME="1c">401</A></TD><TD>                        };</TD></TR><TR><TD CLASS="l">402</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">403</TD><TD>                        KeyListener keyListener = new KeyAdapter() {</TD></TR><TR><TD CLASS="l">404</TD><TD>                                public void keyPressed(KeyEvent e) {</TD></TR><TR CLASS="z"><TD CLASS="l">405</TD><TD>                                        if (e.character == SWT.CR) {</TD></TR><TR CLASS="z"><TD CLASS="l">406</TD><TD>                                                deactivateCellEditor();</TD></TR><TR CLASS="z"><TD CLASS="l">407</TD><TD>                                                TreeItem[] items = theTree.getSelection();</TD></TR><TR CLASS="z"><TD CLASS="l">408</TD><TD>                                                if (items.length == 1) {</TD></TR><TR CLASS="z"><TD CLASS="l">409</TD><TD>                                                        activateCellEditor(items[0], 1);</TD></TR><TR><TD CLASS="l">410</TD><TD>                                                }</TD></TR><TR><TD CLASS="l">411</TD><TD>                                        }</TD></TR><TR CLASS="z"><TD CLASS="l">412</TD><TD>                                }</TD></TR><TR><TD CLASS="l">413</TD><TD>                        };</TD></TR><TR><TD CLASS="l">414</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">415</TD><TD>                        tree.addMouseListener(theMouseAdapter);</TD></TR><TR CLASS="z"><TD CLASS="l">416</TD><TD>                        tree.addKeyListener(keyListener);</TD></TR><TR CLASS="z"><TD CLASS="l">417</TD><TD>                        ScrollBar hBar = tree.getHorizontalBar();</TD></TR><TR CLASS="z"><TD CLASS="l">418</TD><TD>                        if (hBar != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">419</TD><TD>                                hBar.addSelectionListener(selectionListener);</TD></TR><TR><TD CLASS="l">420</TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l">421</TD><TD>                        ScrollBar vBar = tree.getVerticalBar();</TD></TR><TR CLASS="z"><TD CLASS="l">422</TD><TD>                        if (vBar != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">423</TD><TD>                                vBar.addSelectionListener(selectionListener);</TD></TR><TR><TD CLASS="l"><A NAME="26">424</A></TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l">425</TD><TD>                }</TD></TR><TR><TD CLASS="l">426</TD><TD> </TD></TR><TR><TD CLASS="l">427</TD><TD>                public boolean isCellEditorActive() {</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="24">428</A></TD><TD>                        return cellEditorState != null;</TD></TR><TR><TD CLASS="l">429</TD><TD>                }</TD></TR><TR><TD CLASS="l">430</TD><TD> </TD></TR><TR><TD CLASS="l">431</TD><TD>                public void applyCellEditorValue() {</TD></TR><TR CLASS="z"><TD CLASS="l">432</TD><TD>                        if ((cellEditorState != null) &amp;&amp; (cellModifier != null)) {</TD></TR><TR CLASS="z"><TD CLASS="l">433</TD><TD>                                TreeItem treeItem = cellEditorState.fTreeItem;</TD></TR><TR><TD CLASS="l">434</TD><TD> </TD></TR><TR><TD CLASS="l">435</TD><TD>                                // The area below the cell editor needs to be explicity</TD></TR><TR><TD CLASS="l">436</TD><TD>                                // repainted on Linux</TD></TR><TR><TD CLASS="l">437</TD><TD>                                //</TD></TR><TR><TD CLASS="l">438</TD><TD>                                // Rectangle r = B2BHacks.IS_UNIX ? treeItem.getBounds() :</TD></TR><TR><TD CLASS="l">439</TD><TD>                                // null;</TD></TR><TR><TD CLASS="l">440</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">441</TD><TD>                                Object value = cellEditorState.fCellEditor.getValue();</TD></TR><TR CLASS="z"><TD CLASS="l">442</TD><TD>                                String property = cellEditorState.fProperty;</TD></TR><TR><TD CLASS="l">443</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">444</TD><TD>                                deactivateCellEditor();</TD></TR><TR><TD CLASS="l">445</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">446</TD><TD>                                cellModifier.modify(treeItem, property, value);</TD></TR><TR><TD CLASS="l">447</TD><TD> </TD></TR><TR><TD CLASS="l">448</TD><TD>                                // if (r != null) {</TD></TR><TR><TD CLASS="l">449</TD><TD>                                // tree.redraw(r.x, r.y, tree.getBounds().width, r.height,</TD></TR><TR><TD CLASS="l">450</TD><TD>                                // false);</TD></TR><TR><TD CLASS="l">451</TD><TD>                                // }</TD></TR><TR><TD CLASS="l">452</TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="25">453</A></TD><TD>                }</TD></TR><TR><TD CLASS="l">454</TD><TD> </TD></TR><TR><TD CLASS="l">455</TD><TD>                public void deactivateCellEditor() {</TD></TR><TR><TD CLASS="l">456</TD><TD>                        // Clean up any previous editor control</TD></TR><TR CLASS="z"><TD CLASS="l">457</TD><TD>                        if (cellEditorState != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">458</TD><TD>                                cellEditorState.deactivate();</TD></TR><TR CLASS="z"><TD CLASS="l">459</TD><TD>                                cellEditorState = null;</TD></TR><TR><TD CLASS="l"><A NAME="23">460</A></TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l">461</TD><TD>                }</TD></TR><TR><TD CLASS="l">462</TD><TD> </TD></TR><TR><TD CLASS="l">463</TD><TD>                public void activateCellEditor(TreeItem treeItem, int column) {</TD></TR><TR CLASS="z"><TD CLASS="l">464</TD><TD>                        if (cellModifier instanceof ICellEditorProvider) {</TD></TR><TR CLASS="z"><TD CLASS="l">465</TD><TD>                                ICellEditorProvider cellEditorProvider = (ICellEditorProvider) cellModifier;</TD></TR><TR CLASS="z"><TD CLASS="l">466</TD><TD>                                Object data = treeItem.getData();</TD></TR><TR CLASS="z"><TD CLASS="l">467</TD><TD>                                if (fColumnProperties.length &gt; column) {</TD></TR><TR CLASS="z"><TD CLASS="l">468</TD><TD>                                        String property = fColumnProperties[column];</TD></TR><TR CLASS="z"><TD CLASS="l">469</TD><TD>                                        if (cellModifier.canModify(data, property)) {</TD></TR><TR CLASS="z"><TD CLASS="l">470</TD><TD>                                                CellEditor newCellEditor = cellEditorProvider.getCellEditor(data, column);</TD></TR><TR CLASS="z"><TD CLASS="l">471</TD><TD>                                                if (newCellEditor != null) {</TD></TR><TR><TD CLASS="l">472</TD><TD>                                                        // The control that will be the editor must be a</TD></TR><TR><TD CLASS="l">473</TD><TD>                                                        // child of the columnPosition</TD></TR><TR CLASS="z"><TD CLASS="l">474</TD><TD>                                                        Control control = newCellEditor.getControl();</TD></TR><TR CLASS="z"><TD CLASS="l">475</TD><TD>                                                        if (control != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">476</TD><TD>                                                                cellEditorState = new CellEditorState(newCellEditor, control, treeItem, column, property);</TD></TR><TR CLASS="z"><TD CLASS="l">477</TD><TD>                                                                cellEditorState.activate();</TD></TR><TR><TD CLASS="l">478</TD><TD>                                                        }</TD></TR><TR><TD CLASS="l">479</TD><TD>                                                }</TD></TR><TR><TD CLASS="l">480</TD><TD>                                        }</TD></TR><TR><TD CLASS="l">481</TD><TD>                                }</TD></TR><TR><TD CLASS="l">482</TD><TD>                        }</TD></TR><TR CLASS="z"><TD CLASS="l">483</TD><TD>                }</TD></TR><TR><TD CLASS="l">484</TD><TD> </TD></TR><TR><TD CLASS="l">485</TD><TD>                /**</TD></TR><TR><TD CLASS="l">486</TD><TD>                 * this class holds the state that is need on a per cell editor</TD></TR><TR><TD CLASS="l">487</TD><TD>                 * invocation basis</TD></TR><TR><TD CLASS="l">488</TD><TD>                 */</TD></TR><TR><TD CLASS="l">489</TD><TD>                public class CellEditorState implements ICellEditorListener, FocusListener {</TD></TR><TR><TD CLASS="l">490</TD><TD>                        public CellEditor fCellEditor;</TD></TR><TR><TD CLASS="l">491</TD><TD>                        public Control fControl;</TD></TR><TR><TD CLASS="l"><A NAME="27">492</A></TD><TD>                        public TreeItem fTreeItem;</TD></TR><TR><TD CLASS="l">493</TD><TD>                        public int fColumnNumber;</TD></TR><TR><TD CLASS="l">494</TD><TD>                        public String fProperty;</TD></TR><TR><TD CLASS="l">495</TD><TD> </TD></TR><TR CLASS="z"><TD CLASS="l">496</TD><TD>                        public CellEditorState(CellEditor cellEditor, Control control, TreeItem treeItem, int columnNumber, String property) {</TD></TR><TR CLASS="z"><TD CLASS="l">497</TD><TD>                                this.fCellEditor = cellEditor;</TD></TR><TR CLASS="z"><TD CLASS="l">498</TD><TD>                                this.fControl = control;</TD></TR><TR CLASS="z"><TD CLASS="l">499</TD><TD>                                this.fTreeItem = treeItem;</TD></TR><TR CLASS="z"><TD CLASS="l">500</TD><TD>                                this.fColumnNumber = columnNumber;</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="29">501</A></TD><TD>                                this.fProperty = property;</TD></TR><TR CLASS="z"><TD CLASS="l">502</TD><TD>                        }</TD></TR><TR><TD CLASS="l">503</TD><TD> </TD></TR><TR><TD CLASS="l">504</TD><TD>                        public void activate() {</TD></TR><TR CLASS="z"><TD CLASS="l">505</TD><TD>                                Object element = fTreeItem.getData();</TD></TR><TR CLASS="z"><TD CLASS="l">506</TD><TD>                                String value = cellModifier.getValue(element, fProperty).toString();</TD></TR><TR CLASS="z"><TD CLASS="l">507</TD><TD>                                if (fControl instanceof Text) {</TD></TR><TR CLASS="z"><TD CLASS="l">508</TD><TD>                                        Text text = (Text) fControl;</TD></TR><TR CLASS="z"><TD CLASS="l">509</TD><TD>                                        int requiredSize = value.length() + 100;</TD></TR><TR CLASS="z"><TD CLASS="l">510</TD><TD>                                        if (text.getTextLimit() &lt; requiredSize) {</TD></TR><TR CLASS="z"><TD CLASS="l">511</TD><TD>                                                text.setTextLimit(requiredSize);</TD></TR><TR><TD CLASS="l">512</TD><TD>                                        }</TD></TR><TR><TD CLASS="l">513</TD><TD>                                }</TD></TR><TR CLASS="z"><TD CLASS="l">514</TD><TD>                                Rectangle r = fTreeItem.getBounds();</TD></TR><TR CLASS="z"><TD CLASS="l">515</TD><TD>                                if (r != null) {</TD></TR><TR CLASS="z"><TD CLASS="l">516</TD><TD>                                        fControl.setBounds(columnPosition + 5, r.y + 1, fTree1.getClientArea().width - (columnPosition + 5), r.height - 1);</TD></TR><TR CLASS="z"><TD CLASS="l">517</TD><TD>                                        fControl.setVisible(true);</TD></TR><TR CLASS="z"><TD CLASS="l">518</TD><TD>                                        fCellEditor.setValue(value);</TD></TR><TR CLASS="z"><TD CLASS="l">519</TD><TD>                                        fCellEditor.addListener(this);</TD></TR><TR CLASS="z"><TD CLASS="l">520</TD><TD>                                        fCellEditor.setFocus();</TD></TR><TR CLASS="z"><TD CLASS="l">521</TD><TD>                                        fControl.addFocusListener(this);</TD></TR><TR><TD CLASS="l"><A NAME="2c">522</A></TD><TD>                                }</TD></TR><TR CLASS="z"><TD CLASS="l">523</TD><TD>                        }</TD></TR><TR><TD CLASS="l">524</TD><TD> </TD></TR><TR><TD CLASS="l">525</TD><TD>                        public void deactivate() {</TD></TR><TR CLASS="z"><TD CLASS="l">526</TD><TD>                                fCellEditor.removeListener(this);</TD></TR><TR CLASS="z"><TD CLASS="l">527</TD><TD>                                fControl.removeFocusListener(this);</TD></TR><TR CLASS="z"><TD CLASS="l">528</TD><TD>                                fCellEditor.deactivate();</TD></TR><TR CLASS="z"><TD CLASS="l">529</TD><TD>                                fTree1.forceFocus();</TD></TR><TR CLASS="z"><TD CLASS="l">530</TD><TD>                        }</TD></TR><TR><TD CLASS="l">531</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="2a">532</A></TD><TD>                        // ICellEditorListener methods</TD></TR><TR><TD CLASS="l">533</TD><TD>                        //</TD></TR><TR><TD CLASS="l">534</TD><TD>                        public void applyEditorValue() {</TD></TR><TR CLASS="z"><TD CLASS="l">535</TD><TD>                                applyCellEditorValue();</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="2b">536</A></TD><TD>                        }</TD></TR><TR><TD CLASS="l">537</TD><TD> </TD></TR><TR><TD CLASS="l">538</TD><TD>                        public void cancelEditor() {</TD></TR><TR CLASS="z"><TD CLASS="l">539</TD><TD>                                deactivateCellEditor();</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="2d">540</A></TD><TD>                        }</TD></TR><TR><TD CLASS="l">541</TD><TD> </TD></TR><TR><TD CLASS="l">542</TD><TD>                        public void editorValueChanged(boolean oldValidState, boolean newValidState) {</TD></TR><TR><TD CLASS="l">543</TD><TD>                                // nothing, for now</TD></TR><TR CLASS="z"><TD CLASS="l">544</TD><TD>                        }</TD></TR><TR><TD CLASS="l">545</TD><TD> </TD></TR><TR><TD CLASS="l"><A NAME="2e">546</A></TD><TD>                        // FocusListener methods</TD></TR><TR><TD CLASS="l">547</TD><TD>                        //</TD></TR><TR><TD CLASS="l">548</TD><TD>                        public void focusGained(FocusEvent e) {</TD></TR><TR><TD CLASS="l">549</TD><TD>                                // do nothing</TD></TR><TR CLASS="z"><TD CLASS="l"><A NAME="2f">550</A></TD><TD>                        }</TD></TR><TR><TD CLASS="l">551</TD><TD> </TD></TR><TR><TD CLASS="l">552</TD><TD>                        public void focusLost(FocusEvent e) {</TD></TR><TR CLASS="z"><TD CLASS="l">553</TD><TD>                                applyCellEditorValue();</TD></TR><TR CLASS="z"><TD CLASS="l">554</TD><TD>                        }</TD></TR><TR><TD CLASS="l">555</TD><TD>                }</TD></TR><TR><TD CLASS="l">556</TD><TD>        }</TD></TR><TR><TD CLASS="l">557</TD><TD>}</TD></TR></TABLE><P></P><TABLE CLASS="hdft" CELLSPACING="0" WIDTH="100%"><TR><TD CLASS="nv">[<A HREF="../xslUnitTestCoverage.html">all classes</A>][<A HREF="41.html">org.eclipse.wst.xml.ui.internal.tabletree</A>]</TD></TR><TR><TD CLASS="tl"><A HREF="http://www.eclemma.org/support.html">EMMA 2.0.5312 EclEmma Fix 1</A> (C) Vladimir Roubtsov</TD></TR></TABLE></BODY></HTML>