【聚杰网数据库编程】Eclipse RCP+Spring建胖客户端Web程序
Eclipse-RegisterBuddy: SpringClient
四. 创建一个新的WatchListView
现在,你可以开始创建你自己的视图类了。首先,你要创建一个WatchListView,它将向应用程序服务器的StockDataService发出一个请求:
1. 在plugin.xml中,转到extensions选项卡。
2. 在All Extensions树中选择org.eclipse.ui.views,然后点击Add。
3. 随后出现一个新的对话框窗口。在Extension Points树中滚动并且选择org.eclipse.ui.views。在相应于org.eclipse.ui.views的可用模板中,选择SampleView,然后点击Next(见图13)。
![]() 图13.新的扩展对话框 |
4. 在"Main View Settings"窗口中,填写如下内容:
| Java Package Name = eclipseTradeClient.views.watchlist View Class Name = WatchListView View Name = Watch List View View Category ID = EclipseTradeClient View Category Name = WatchList Category |
让"Table Viewer"保持选择状态并且点选"Add the view to the resource perspective checked"(见图14)。点击Next。
![]() 图14.针对于Watch List视图设置"Main View Settings" |
5. 在"View Features"下,保持默认设置并且点击Finish。
6. 现在,你会在plugin.xml的"All Extensions"选项卡中看到新的"View and Category"。
7. 现在,你可以开始编写你的Watch List视图了。这个观察列表是一个表格,因此首先要为此表实现接口ITableLabelProvider。在包eclipseTradeClient.views.watchlist下创建一个新类WatchListTableLabelProvider。你可以把一个ITableLabelProvider当作是JFace的等价物-Swing中的TableCellRenderer。下面是WatchListTableLabelProvider的代码部分:
| package eclipseTradeClient.views.watchlist; import java.text.NumberFormat; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import stephenlum.services.stock.dto.StockDTO; public class WatchListTableLabelProvider extends LabelProvider implements ITableLabelProvider { private static NumberFormat numberFormat = NumberFormat.getInstance(); public Image getColumnImage(Object element, int columnIndex) { return null; } public String getColumnText(Object element, int columnIndex) { if (element != null) { switch (columnIndex) { case 0: return ((StockDTO) element).getTickerSymbol(); case 1: return ((StockDTO) element).getLastTrade().toString(); case 2: return numberFormat.format(((StockDTO) element).getVolume()); case 3: return ((StockDTO) element).getDaysRange(); case 4: return numberFormat.format(((StockDTO) element).getAvgVol()); case 5: return ((StockDTO) element).getDaysRange(); case 6: return ((StockDTO) element).getFiftyTwoWeekRange(); case 7: return ((StockDTO) element).getMarketCap(); } } return ""; } } |
8. 最后,你把你的WatchListView添加到Perspective类。在Package Explorer中打开类Perspective并且作如下修改以便WatchListView将出现于该页面的底部:
| package eclipseTradeClient; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IPerspectiveFactory; import org.eclipse.ui.IFolderLayout; import eclipseTradeClient.views.WatchListView; public class Perspective implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { String editorArea = layout.getEditorArea(); layout.setEditorAreaVisible(false); layout.setFixed(false); layout.addStandaloneView(ExplorerView.ID, false, IPageLayout.LEFT, 0.25f, editorArea); IFolderLayout topLeft = layout.createFolder("TOP", IPageLayout.TOP, 0.50f, editorArea); layout.addView(WatchListView.ID,IPageLayout.BOTTOM, 0.25f,editorArea); } } |
9. 现在,你可以在类WatchListView中进行添加。我尽量保持模板生成的代码不动以便于你可以自由地添加你的代码。实质上,你是在添加一个表格-它将显示包含在一个类StockDTO实例中的所有信息。因此,表格中的列也是基于StockDTO的成员。我已经重命名了两个生成的Action-现在action1能够从stocktradeserver中取回股票的列表并且在表格中显示它们,而action2从表格中删除所有元素(请参考源码中的列表1.eclipseTradeClient.views.watchlist)。






