CompositeTableTest.java
上传用户:hengxinggs
上传日期:2008-01-15
资源大小:212k
文件大小:5k
源码类别:

PlugIns编程

开发平台:

Java

  1. /*
  2.  * Copyright (C) 2005 David Orme <djo@coconut-palm-software.com>
  3.  * 
  4.  * All rights reserved. This program and the accompanying materials
  5.  * are made available under the terms of the Eclipse Public License v1.0
  6.  * which accompanies this distribution, and is available at
  7.  * http://www.eclipse.org/legal/epl-v10.html
  8.  *
  9.  * Contributors:
  10.  *     David Orme     - Initial API and implementation
  11.  */
  12. package org.eclipse.jface.examples.databinding.compositetable.test;
  13. import java.util.LinkedList;
  14. import org.eclipse.jface.examples.databinding.compositetable.CompositeTable;
  15. import org.eclipse.jface.examples.databinding.compositetable.IDeleteHandler;
  16. import org.eclipse.jface.examples.databinding.compositetable.IInsertHandler;
  17. import org.eclipse.jface.examples.databinding.compositetable.IRowContentProvider;
  18. import org.eclipse.jface.examples.databinding.compositetable.IRowFocusListener;
  19. import org.eclipse.swt.SWT;
  20. import org.eclipse.swt.layout.FillLayout;
  21. import org.eclipse.swt.widgets.Control;
  22. import org.eclipse.swt.widgets.Display;
  23. import org.eclipse.swt.widgets.Shell;
  24. public class CompositeTableTest {
  25. private Shell sShell = null;  //  @jve:decl-index=0:visual-constraint="10,10"
  26. private CompositeTable table = null;
  27. private Header header = null;
  28. private Row row = null;
  29. private LinkedList personList = new LinkedList();
  30. public CompositeTableTest() {
  31. personList.add(new Person("John", "1234", "Wheaton", "IL"));
  32. personList.add(new Person("Jane", "1234", "Wheaton", "IL"));
  33. personList.add(new Person("Frank", "1234", "Wheaton", "IL"));
  34. personList.add(new Person("Joe", "1234", "Wheaton", "IL"));
  35. personList.add(new Person("Chet", "1234", "Wheaton", "IL"));
  36. personList.add(new Person("Wilbur", "1234", "Wheaton", "IL"));
  37. personList.add(new Person("Elmo", "1234", "Wheaton", "IL"));
  38. }
  39. /**
  40.  * This method initializes multiRowViewer
  41.  *
  42.  */
  43. private void createMultiRowViewer() {
  44. table = new CompositeTable(sShell, SWT.NONE);
  45. table.setRunTime(true);
  46. table.setWeights(new int[] {35, 35, 20, 10});
  47. table.addRowContentProvider(rowContentProvider);
  48. table.addDeleteHandler(deleteHandler);
  49. table.addInsertHandler(insertHandler);
  50. table.addRowFocusListener(rowListener);
  51. table.setNumRowsInCollection(personList.size());
  52. createHeader();
  53. createRow();
  54. }
  55. private IRowContentProvider rowContentProvider = new IRowContentProvider() {
  56. public void refresh(CompositeTable table, int currentObjectOffset, Control row) {
  57. Row rowObj = (Row) row;
  58. Person person = (Person)personList.get(currentObjectOffset);
  59. rowObj.name.setText(person.name);
  60. rowObj.address.setText(person.address);
  61. rowObj.city.setText(person.city);
  62. rowObj.state.setText(person.state);
  63. }
  64. };
  65. private IDeleteHandler deleteHandler = new IDeleteHandler() {
  66. public boolean canDelete(int rowInCollection) {
  67. return true;
  68. }
  69. public void deleteRow(int rowInCollection) {
  70. personList.remove(rowInCollection);
  71. }
  72. };
  73. private IInsertHandler insertHandler = new IInsertHandler() {
  74. public int insert(int positionHint) {
  75. Person newPerson = new Person();
  76. personList.add(positionHint, newPerson);
  77. return positionHint;
  78. // int newPosition = (int)(Math.random() * (personList.size()+1));
  79. // personList.add(newPosition, newPerson);
  80. // return newPosition;
  81. }
  82. };
  83. private IRowFocusListener rowListener = new IRowFocusListener() {
  84. public boolean requestRowChange(CompositeTable sender, int currentObjectOffset, Control row) {
  85. System.out.println("requestRC");
  86. return true;
  87. }
  88. public void depart(CompositeTable sender, int currentObjectOffset, Control row) {
  89. System.out.println("depart");
  90. Person person = (Person)personList.get(currentObjectOffset);
  91. Row rowObj = (Row) row;
  92. person.name = rowObj.name.getText();
  93. person.address = rowObj.address.getText();
  94. person.city = rowObj.city.getText();
  95. person.state = rowObj.state.getText();
  96. }
  97. public void arrive(CompositeTable sender, int currentObjectOffset, Control row) {
  98. System.out.println("arrive");
  99. }
  100. };
  101. /**
  102.  * This method initializes header
  103.  *
  104.  */
  105. private void createHeader() {
  106. header = new Header(table, SWT.NONE);
  107. }
  108. /**
  109.  * This method initializes row
  110.  *
  111.  */
  112. private void createRow() {
  113. row = new Row(table, SWT.NONE);
  114. }
  115. /**
  116.  * @param args
  117.  */
  118. public static void main(String[] args) {
  119. Display display = Display.getDefault();
  120. CompositeTableTest thisClass = new CompositeTableTest();
  121. thisClass.createSShell();
  122. thisClass.sShell.open();
  123. while (!thisClass.sShell.isDisposed()) {
  124. if (!display.readAndDispatch())
  125. display.sleep();
  126. }
  127. display.dispose();
  128. }
  129. /**
  130.  * This method initializes sShell
  131.  */
  132. private void createSShell() {
  133. sShell = new Shell();
  134. sShell.setText("Shell");
  135. sShell.setLayout(new FillLayout());
  136. createMultiRowViewer();
  137. sShell.setSize(new org.eclipse.swt.graphics.Point(445,243));
  138. }
  139. }