﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Hexise's Blog-随笔分类-SWT/JFace</title><link>http://www.blogjava.net/Hexise/category/18792.html</link><description>业精于勤荒于嬉 行成于思毁于随</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 23:19:56 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 23:19:56 GMT</pubDate><ttl>60</ttl><item><title>JFace 可编辑的TreeViewer和TableViewer</title><link>http://www.blogjava.net/Hexise/archive/2007/01/04/91764.html</link><dc:creator>Hexise</dc:creator><author>Hexise</author><pubDate>Thu, 04 Jan 2007 07:29:00 GMT</pubDate><guid>http://www.blogjava.net/Hexise/archive/2007/01/04/91764.html</guid><wfw:comment>http://www.blogjava.net/Hexise/comments/91764.html</wfw:comment><comments>http://www.blogjava.net/Hexise/archive/2007/01/04/91764.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hexise/comments/commentRss/91764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hexise/services/trackbacks/91764.html</trackback:ping><description><![CDATA[
		<p>向已有的TreeViewer和TableViewer上添加编辑功能，可以使用CellEditor和CellModifier。</p>
		<p>CellEditor定义了某个列被编辑时显示的外观，它可以是文本框、下拉列表框或单选框，也可以自己定义。</p>
		<p>通常使用的CellEditor的子类就是：CheckboxCellEditor、ComboBoxCellEditor和TextCellEditor。<br />CellEditor一般用数组来保存，如果某个列不需要编辑，则可将该列的CellEditor设为null。<br />当CellEditor的数组定义完后，即可利用setCellEditors(CellEditor[] editors)方法将该数组设置到对应的TreeViewer或TableViewer中去。例如：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">    CellEditor[] cellEditors </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> CellEditor[</span>
				<span style="COLOR: #000000">5</span>
				<span style="COLOR: #000000">];<br />    cellEditors[</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> TextCellEditor(tableViewer.getTable());<br />    cellEditors[</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">;<br />    cellEditors[</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> ComboBoxCellEditor(tableViewer.getTable(), </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> String[]{</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">first</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">second</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">third</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">forth</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">});<br />    cellEditors[</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> CheckboxCellEditor(tableViewer.getTable());<br />    cellEditors[</span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> CustomizedTextCellEditor(tableViewer.getTable());<br />    tableViewer.setCellEditors(cellEditors);</span>
		</div>
		<br />其中CustomizedTextCellEditor是自定义的CellEditor，避免了设置value时造成的空指针异常。<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_63_243_Open_Image" onclick="this.style.display='none'; Codehighlighter1_63_243_Open_Text.style.display='none'; Codehighlighter1_63_243_Closed_Image.style.display='inline'; Codehighlighter1_63_243_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_63_243_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_63_243_Closed_Text.style.display='none'; Codehighlighter1_63_243_Open_Image.style.display='inline'; Codehighlighter1_63_243_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> CustomizedTextCellEditor </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> TextCellEditor</span><span id="Codehighlighter1_63_243_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_63_243_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_115_135_Open_Image" onclick="this.style.display='none'; Codehighlighter1_115_135_Open_Text.style.display='none'; Codehighlighter1_115_135_Closed_Image.style.display='inline'; Codehighlighter1_115_135_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_115_135_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_115_135_Closed_Text.style.display='none'; Codehighlighter1_115_135_Open_Image.style.display='inline'; Codehighlighter1_115_135_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> CustomizedTextCellEditor(Composite parent)</span><span id="Codehighlighter1_115_135_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_115_135_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">super</span><span style="COLOR: #000000">(parent);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_178_239_Open_Image" onclick="this.style.display='none'; Codehighlighter1_178_239_Open_Text.style.display='none'; Codehighlighter1_178_239_Closed_Image.style.display='inline'; Codehighlighter1_178_239_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_178_239_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_178_239_Closed_Text.style.display='none'; Codehighlighter1_178_239_Open_Image.style.display='inline'; Codehighlighter1_178_239_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> doSetValue(Object value) </span><span id="Codehighlighter1_178_239_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_178_239_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(value </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">super</span><span style="COLOR: #000000">.doSetValue(value);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000">        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><p><br />CellEditor负责外观，它对要编辑的模型信息一无所知。所以jface中引入了ICellModifier接口，将model与CellEditor联系在一起。为了确定在CellModifier中的列，需要定义columnProperties的String[]数组，用以区分不同列对应的不同属性。使用setColumnProperties(String[] columnProperties)设置该属性集。</p><p>ICellModifier定义了三个接口方法：</p><p>public boolean canModify(Object element, String property);<br />该方法判断何时该列可以被编辑。其中element是对应的model。返回true表示此时该列可以被编辑。</p><p>public Object getValue(Object element, String property);<br />该方法一般在activateCellEditor()时调用，用于设定CellEditor的初始值。其中element是对应的model。</p><p>此处虽然可以返回Object类型的引用，但是使用时需小心，特定的CellEditor仅接受特定类型的Value。比如：<br />TextCellEditor对应String类型的Value；<br />ComboBoxCellEditor对应Integer类型的Value；<br />CheckBoxCellEditor对应Boolean类型的Value；<br />若返回了不适合的Value对象，则会抛出AssertionFailedException。</p><p>public void modify(Object element, String property, Object value);<br />该方法执行保存修改。一般在saveEditorValue之类的方法中调用。此处的element不再是model，而是Item类型的引用。取用对应的模型，需要使用((Item) element).getData()方法。一般此处的value值，也就是当前CellEditor的Value值，使用CellEditor.getValue()得到。另外，在执行完更改后，需要刷新对应的TableViewer或TreeViewer，使做出的更新可见。<br /><br />org.eclipse.debug.internal.ui.elements.adapters.DefaultVariableCellModifier是ICellModifier的一个完整实现：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.eclipse.debug.core.DebugException;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.eclipse.debug.core.model.IVariable;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.eclipse.debug.internal.ui.DebugUIPlugin;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.eclipse.debug.internal.ui.DefaultLabelProvider;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.eclipse.debug.internal.ui.VariableValueEditorManager;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.eclipse.debug.ui.actions.IVariableValueEditor;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.eclipse.jface.viewers.ICellModifier;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_376_399_Open_Image" onclick="this.style.display='none'; Codehighlighter1_376_399_Open_Text.style.display='none'; Codehighlighter1_376_399_Closed_Image.style.display='inline'; Codehighlighter1_376_399_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_376_399_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_376_399_Closed_Text.style.display='none'; Codehighlighter1_376_399_Open_Image.style.display='inline'; Codehighlighter1_376_399_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_376_399_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="Codehighlighter1_376_399_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> * </span><span style="COLOR: #808080">@since</span><span style="COLOR: #008000"> 3.2<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_467_2501_Open_Image" onclick="this.style.display='none'; Codehighlighter1_467_2501_Open_Text.style.display='none'; Codehighlighter1_467_2501_Closed_Image.style.display='inline'; Codehighlighter1_467_2501_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_467_2501_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_467_2501_Closed_Text.style.display='none'; Codehighlighter1_467_2501_Open_Image.style.display='inline'; Codehighlighter1_467_2501_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> DefaultVariableCellModifier </span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"> ICellModifier </span><span id="Codehighlighter1_467_2501_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_467_2501_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_472_587_Open_Image" onclick="this.style.display='none'; Codehighlighter1_472_587_Open_Text.style.display='none'; Codehighlighter1_472_587_Closed_Image.style.display='inline'; Codehighlighter1_472_587_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_472_587_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_472_587_Closed_Text.style.display='none'; Codehighlighter1_472_587_Open_Image.style.display='inline'; Codehighlighter1_472_587_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_472_587_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_472_587_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> (non-Javadoc)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_648_852_Open_Image" onclick="this.style.display='none'; Codehighlighter1_648_852_Open_Text.style.display='none'; Codehighlighter1_648_852_Closed_Image.style.display='inline'; Codehighlighter1_648_852_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_648_852_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_648_852_Closed_Text.style.display='none'; Codehighlighter1_648_852_Open_Image.style.display='inline'; Codehighlighter1_648_852_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> canModify(Object element, String property) </span><span id="Codehighlighter1_648_852_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_648_852_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_723_833_Open_Image" onclick="this.style.display='none'; Codehighlighter1_723_833_Open_Text.style.display='none'; Codehighlighter1_723_833_Closed_Image.style.display='inline'; Codehighlighter1_723_833_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_723_833_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_723_833_Closed_Text.style.display='none'; Codehighlighter1_723_833_Open_Image.style.display='inline'; Codehighlighter1_723_833_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) </span><span id="Codehighlighter1_723_833_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_723_833_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_762_829_Open_Image" onclick="this.style.display='none'; Codehighlighter1_762_829_Open_Text.style.display='none'; Codehighlighter1_762_829_Closed_Image.style.display='inline'; Codehighlighter1_762_829_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_762_829_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_762_829_Closed_Text.style.display='none'; Codehighlighter1_762_829_Open_Image.style.display='inline'; Codehighlighter1_762_829_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (element </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> IVariable) </span><span id="Codehighlighter1_762_829_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_762_829_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> ((IVariable) element).supportsValueModification();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_856_970_Open_Image" onclick="this.style.display='none'; Codehighlighter1_856_970_Open_Text.style.display='none'; Codehighlighter1_856_970_Closed_Image.style.display='inline'; Codehighlighter1_856_970_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_856_970_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_856_970_Closed_Text.style.display='none'; Codehighlighter1_856_970_Open_Image.style.display='inline'; Codehighlighter1_856_970_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_856_970_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_856_970_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> (non-Javadoc)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1029_1383_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1029_1383_Open_Text.style.display='none'; Codehighlighter1_1029_1383_Closed_Image.style.display='inline'; Codehighlighter1_1029_1383_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1029_1383_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1029_1383_Closed_Text.style.display='none'; Codehighlighter1_1029_1383_Open_Image.style.display='inline'; Codehighlighter1_1029_1383_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Object getValue(Object element, String property) </span><span id="Codehighlighter1_1029_1383_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1029_1383_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1104_1365_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1104_1365_Open_Text.style.display='none'; Codehighlighter1_1104_1365_Closed_Image.style.display='inline'; Codehighlighter1_1104_1365_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1104_1365_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1104_1365_Closed_Text.style.display='none'; Codehighlighter1_1104_1365_Open_Image.style.display='inline'; Codehighlighter1_1104_1365_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) </span><span id="Codehighlighter1_1104_1365_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1104_1365_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1143_1361_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1143_1361_Open_Text.style.display='none'; Codehighlighter1_1143_1361_Closed_Image.style.display='inline'; Codehighlighter1_1143_1361_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1143_1361_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1143_1361_Closed_Text.style.display='none'; Codehighlighter1_1143_1361_Open_Image.style.display='inline'; Codehighlighter1_1143_1361_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (element </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> IVariable) </span><span id="Codehighlighter1_1143_1361_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1143_1361_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                IVariable variable </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (IVariable) element;<br /><img id="Codehighlighter1_1199_1296_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1199_1296_Open_Text.style.display='none'; Codehighlighter1_1199_1296_Closed_Image.style.display='inline'; Codehighlighter1_1199_1296_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1199_1296_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1199_1296_Closed_Text.style.display='none'; Codehighlighter1_1199_1296_Open_Image.style.display='inline'; Codehighlighter1_1199_1296_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_1199_1296_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1199_1296_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> DefaultLabelProvider.escapeSpecialChars(variable.getValue().getValueString());<br /><img id="Codehighlighter1_1323_1356_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1323_1356_Open_Text.style.display='none'; Codehighlighter1_1323_1356_Closed_Image.style.display='inline'; Codehighlighter1_1323_1356_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1323_1356_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1323_1356_Closed_Text.style.display='none'; Codehighlighter1_1323_1356_Open_Image.style.display='inline'; Codehighlighter1_1323_1356_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (DebugException e) </span><span id="Codehighlighter1_1323_1356_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1323_1356_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    DebugUIPlugin.log(e);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1387_1517_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1387_1517_Open_Text.style.display='none'; Codehighlighter1_1387_1517_Closed_Image.style.display='inline'; Codehighlighter1_1387_1517_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1387_1517_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1387_1517_Closed_Text.style.display='none'; Codehighlighter1_1387_1517_Open_Image.style.display='inline'; Codehighlighter1_1387_1517_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1387_1517_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_1387_1517_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> (non-Javadoc)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1586_2498_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1586_2498_Open_Text.style.display='none'; Codehighlighter1_1586_2498_Closed_Image.style.display='inline'; Codehighlighter1_1586_2498_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1586_2498_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1586_2498_Closed_Text.style.display='none'; Codehighlighter1_1586_2498_Open_Image.style.display='inline'; Codehighlighter1_1586_2498_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> modify(Object element, String property, Object value) </span><span id="Codehighlighter1_1586_2498_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1586_2498_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Object oldValue </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> getValue(element, property);<br /><img id="Codehighlighter1_1674_2495_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1674_2495_Open_Text.style.display='none'; Codehighlighter1_1674_2495_Closed_Image.style.display='inline'; Codehighlighter1_1674_2495_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1674_2495_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1674_2495_Closed_Text.style.display='none'; Codehighlighter1_1674_2495_Open_Image.style.display='inline'; Codehighlighter1_1674_2495_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">value.equals(oldValue)) </span><span id="Codehighlighter1_1674_2495_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1674_2495_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1756_2491_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1756_2491_Open_Text.style.display='none'; Codehighlighter1_1756_2491_Closed_Image.style.display='inline'; Codehighlighter1_1756_2491_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1756_2491_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1756_2491_Closed_Text.style.display='none'; Codehighlighter1_1756_2491_Open_Image.style.display='inline'; Codehighlighter1_1756_2491_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (VariableColumnPresentation.COLUMN_VARIABLE_VALUE.equals(property)) </span><span id="Codehighlighter1_1756_2491_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1756_2491_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1796_2480_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1796_2480_Open_Text.style.display='none'; Codehighlighter1_1796_2480_Closed_Image.style.display='inline'; Codehighlighter1_1796_2480_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1796_2480_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1796_2480_Closed_Text.style.display='none'; Codehighlighter1_1796_2480_Open_Image.style.display='inline'; Codehighlighter1_1796_2480_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (element </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> IVariable) </span><span id="Codehighlighter1_1796_2480_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1796_2480_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    IVariable variable </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (IVariable) element;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    IVariableValueEditor editor </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> VariableValueEditorManager.getDefault().getVariableValueEditor(variable.getModelIdentifier());<br /><img id="Codehighlighter1_2009_2086_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2009_2086_Open_Text.style.display='none'; Codehighlighter1_2009_2086_Closed_Image.style.display='inline'; Codehighlighter1_2009_2086_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2009_2086_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2009_2086_Closed_Text.style.display='none'; Codehighlighter1_2009_2086_Open_Image.style.display='inline'; Codehighlighter1_2009_2086_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (value </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> String) </span><span id="Codehighlighter1_2009_2086_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2009_2086_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                        value </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> DefaultLabelProvider.encodeEsacpedChars((String)value);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_2113_2229_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2113_2229_Open_Text.style.display='none'; Codehighlighter1_2113_2229_Closed_Image.style.display='inline'; Codehighlighter1_2113_2229_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2113_2229_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2113_2229_Closed_Text.style.display='none'; Codehighlighter1_2113_2229_Open_Image.style.display='inline'; Codehighlighter1_2113_2229_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (editor </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_2113_2229_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2113_2229_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_2199_2222_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2199_2222_Open_Text.style.display='none'; Codehighlighter1_2199_2222_Closed_Image.style.display='inline'; Codehighlighter1_2199_2222_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2199_2222_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2199_2222_Closed_Text.style.display='none'; Codehighlighter1_2199_2222_Open_Image.style.display='inline'; Codehighlighter1_2199_2222_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">  (editor.saveVariable(variable, (String) value, DebugUIPlugin.getShell())) </span><span id="Codehighlighter1_2199_2222_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2199_2222_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_2240_2288_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2240_2288_Open_Text.style.display='none'; Codehighlighter1_2240_2288_Closed_Image.style.display='inline'; Codehighlighter1_2240_2288_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2240_2288_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2240_2288_Closed_Text.style.display='none'; Codehighlighter1_2240_2288_Open_Image.style.display='inline'; Codehighlighter1_2240_2288_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_2240_2288_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2240_2288_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                        variable.setValue((String) value);<br /><img id="Codehighlighter1_2315_2474_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2315_2474_Open_Text.style.display='none'; Codehighlighter1_2315_2474_Closed_Image.style.display='inline'; Codehighlighter1_2315_2474_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2315_2474_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2315_2474_Closed_Text.style.display='none'; Codehighlighter1_2315_2474_Open_Image.style.display='inline'; Codehighlighter1_2315_2474_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                    }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (DebugException e) </span><span id="Codehighlighter1_2315_2474_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_2315_2474_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                        DebugUIPlugin.errorDialog(DebugUIPlugin.getShell(), Messages.VariableColumnPresentation_4, Messages.VariableColumnPresentation_5, e.getStatus());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><img src ="http://www.blogjava.net/Hexise/aggbug/91764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hexise/" target="_blank">Hexise</a> 2007-01-04 15:29 <a href="http://www.blogjava.net/Hexise/archive/2007/01/04/91764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse创建Image方法</title><link>http://www.blogjava.net/Hexise/archive/2006/12/29/90703.html</link><dc:creator>Hexise</dc:creator><author>Hexise</author><pubDate>Fri, 29 Dec 2006 04:43:00 GMT</pubDate><guid>http://www.blogjava.net/Hexise/archive/2006/12/29/90703.html</guid><wfw:comment>http://www.blogjava.net/Hexise/comments/90703.html</wfw:comment><comments>http://www.blogjava.net/Hexise/archive/2006/12/29/90703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hexise/comments/commentRss/90703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hexise/services/trackbacks/90703.html</trackback:ping><description><![CDATA[通过图像的相对路径创建org.eclipse.swt.graphics.Image,我通常使用下面两种途径:<br /><br />1.使用Image(Device device, InputStream stream)构造函数,示例代码如下, path为图像相对路径:<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_35_134_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_134_Open_Text.style.display='none'; Codehighlighter1_35_134_Closed_Image.style.display='inline'; Codehighlighter1_35_134_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_35_134_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_134_Closed_Text.style.display='none'; Codehighlighter1_35_134_Open_Image.style.display='inline'; Codehighlighter1_35_134_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Image getImage(String path)</span><span id="Codehighlighter1_35_134_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_35_134_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Image(Display.getCurrent(), getClass().getResourceAsStream(path));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />2.使用ImageDescriptor的createImage()方法,示例代码如下,path为图像相对路径:<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_36_319_Open_Image" onclick="this.style.display='none'; Codehighlighter1_36_319_Open_Text.style.display='none'; Codehighlighter1_36_319_Closed_Image.style.display='inline'; Codehighlighter1_36_319_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_36_319_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_36_319_Closed_Text.style.display='none'; Codehighlighter1_36_319_Open_Image.style.display='inline'; Codehighlighter1_36_319_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Image getImage(String path)</span><span id="Codehighlighter1_36_319_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_36_319_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  URL url </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_61_145_Open_Image" onclick="this.style.display='none'; Codehighlighter1_61_145_Open_Text.style.display='none'; Codehighlighter1_61_145_Closed_Image.style.display='inline'; Codehighlighter1_61_145_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_61_145_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_145_Closed_Text.style.display='none'; Codehighlighter1_61_145_Open_Image.style.display='inline'; Codehighlighter1_61_145_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">try</span><span id="Codehighlighter1_61_145_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_61_145_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   url </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> URL(Activator.getDefault().getDescriptor().getInstallURL(), path);<br /><img id="Codehighlighter1_176_204_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_204_Open_Text.style.display='none'; Codehighlighter1_176_204_Closed_Image.style.display='inline'; Codehighlighter1_176_204_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_176_204_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_176_204_Closed_Text.style.display='none'; Codehighlighter1_176_204_Open_Image.style.display='inline'; Codehighlighter1_176_204_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(MalformedURLException e)</span><span id="Codehighlighter1_176_204_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_176_204_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   e.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  ImageDescriptor imageDescriptor </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ImageDescriptor.createFromURL(url);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> imageDescriptor.createImage();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> }</span></span></div><br />或者:<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_35_147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_147_Open_Text.style.display='none'; Codehighlighter1_35_147_Closed_Image.style.display='inline'; Codehighlighter1_35_147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_35_147_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_147_Closed_Text.style.display='none'; Codehighlighter1_35_147_Open_Image.style.display='inline'; Codehighlighter1_35_147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Image getImage(String path)</span><span id="Codehighlighter1_35_147_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_35_147_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   ImageDescriptor desc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> AbstractUIPlugin.imageDescriptorFromPlugin(ID, path);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> desc.createImage();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><img src ="http://www.blogjava.net/Hexise/aggbug/90703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hexise/" target="_blank">Hexise</a> 2006-12-29 12:43 <a href="http://www.blogjava.net/Hexise/archive/2006/12/29/90703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT中获取字符串占用像素数</title><link>http://www.blogjava.net/Hexise/archive/2006/12/29/90683.html</link><dc:creator>Hexise</dc:creator><author>Hexise</author><pubDate>Fri, 29 Dec 2006 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/Hexise/archive/2006/12/29/90683.html</guid><wfw:comment>http://www.blogjava.net/Hexise/comments/90683.html</wfw:comment><comments>http://www.blogjava.net/Hexise/archive/2006/12/29/90683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hexise/comments/commentRss/90683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hexise/services/trackbacks/90683.html</trackback:ping><description><![CDATA[可以使用GC类的getAdvanceWidth(char ch)获取当前字符所占的像素宽度.<br /><p><strong>getAdvanceWidth</strong></p><p><strong>          </strong>public int <b>getAdvanceWidth</b>(char ch) </p><dl><dd>Returns the <em>advance width</em> of the specified character in the font which is currently selected into the receiver. 
<p>The advance width is defined as the horizontal distance the cursor should move after printing the character in the selected font. </p><p></p></dd><dd><dl><dt><b>Parameters:</b></dt><dd>ch - the character to measure 
</dd><dt><b>Returns:</b></dt><dd>the distance in the x direction to move past the character before painting the next 
</dd><dt><b>Throws:</b></dt><dd><a title="class in org.eclipse.swt" href="http://spaces.msn.com/org/eclipse/swt/SWTException.html"><u>SWTException</u></a> - 
<ul><li>ERROR_GRAPHIC_DISPOSED - if the receiver has been disposed </li></ul></dd></dl></dd></dl><p>可以如下面的程序使用该函数:</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_65_254_Open_Image" onclick="this.style.display='none'; Codehighlighter1_65_254_Open_Text.style.display='none'; Codehighlighter1_65_254_Closed_Image.style.display='inline'; Codehighlighter1_65_254_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_65_254_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_65_254_Closed_Text.style.display='none'; Codehighlighter1_65_254_Open_Image.style.display='inline'; Codehighlighter1_65_254_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> getStringWidth(String string, Control control) </span><span id="Codehighlighter1_65_254_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_65_254_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> width </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    GC gc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> GC(control);<br /><img id="Codehighlighter1_153_220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_153_220_Open_Text.style.display='none'; Codehighlighter1_153_220_Closed_Image.style.display='inline'; Codehighlighter1_153_220_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_153_220_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_153_220_Closed_Text.style.display='none'; Codehighlighter1_153_220_Open_Image.style.display='inline'; Codehighlighter1_153_220_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> string.length(); i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_153_220_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_153_220_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> c </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> string.charAt(i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        width </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> gc.getAdvanceWidth(c);<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    gc.dispose();<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> width;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />或者更通用的,其中string是目标字符串,font是你要设给字符串的字体对象:<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_58_394_Open_Image" onclick="this.style.display='none'; Codehighlighter1_58_394_Open_Text.style.display='none'; Codehighlighter1_58_394_Closed_Image.style.display='inline'; Codehighlighter1_58_394_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_58_394_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_58_394_Closed_Text.style.display='none'; Codehighlighter1_58_394_Open_Image.style.display='inline'; Codehighlighter1_58_394_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> getStringWidth(String string, Font font)</span><span id="Codehighlighter1_58_394_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_58_394_Open_Text"><span style="COLOR: #000000">{<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> width </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Shell shell </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Shell();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Label label </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Label(shell, SWT.NONE);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    label.setFont(font);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    GC gc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> GC(label);<br /><img id="Codehighlighter1_247_333_Open_Image" onclick="this.style.display='none'; Codehighlighter1_247_333_Open_Text.style.display='none'; Codehighlighter1_247_333_Closed_Image.style.display='inline'; Codehighlighter1_247_333_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_247_333_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_247_333_Closed_Text.style.display='none'; Codehighlighter1_247_333_Open_Image.style.display='inline'; Codehighlighter1_247_333_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">string.length();i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_247_333_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_247_333_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> c </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> string.charAt(i);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />          width </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> gc.getAdvanceWidth(c);<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    gc.dispose();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    shell.dispose();<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> width;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><img src ="http://www.blogjava.net/Hexise/aggbug/90683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hexise/" target="_blank">Hexise</a> 2006-12-29 11:21 <a href="http://www.blogjava.net/Hexise/archive/2006/12/29/90683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT中的日期选择控件</title><link>http://www.blogjava.net/Hexise/archive/2006/12/29/90676.html</link><dc:creator>Hexise</dc:creator><author>Hexise</author><pubDate>Fri, 29 Dec 2006 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/Hexise/archive/2006/12/29/90676.html</guid><wfw:comment>http://www.blogjava.net/Hexise/comments/90676.html</wfw:comment><comments>http://www.blogjava.net/Hexise/archive/2006/12/29/90676.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Hexise/comments/commentRss/90676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hexise/services/trackbacks/90676.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 类似于Java Swing 中的JDateChooser,SWT里有没有相类似的日期选择控件呢? 		目前有几种方式提供SWT的时间控件: 		1.eclipse 3.3自带的org.eclipse.swt.widgets.DateTime控件.   eclipse 3.3版本增加了对日期选择控件的支持,下面是官方提供的示例代码:										import				 o...&nbsp;&nbsp;<a href='http://www.blogjava.net/Hexise/archive/2006/12/29/90676.html'>阅读全文</a><img src ="http://www.blogjava.net/Hexise/aggbug/90676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hexise/" target="_blank">Hexise</a> 2006-12-29 11:11 <a href="http://www.blogjava.net/Hexise/archive/2006/12/29/90676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>