Sunteți pe pagina 1din 35

Sanjay Shah Santosh Shah

Product and Branding Table Viewer concepts Table Viewer Implementation Tits & Bits Demo & Q/A Wrap Up

What do you need to tell eclipse My product name My product icons My splash images My about info Launcher name Title bar label .on and on Almost as simple as fill in the blanks

Product Configuration .product files Extension point org.eclipse.runtime.products

10

11

12

Why to use JFace Viewers?

13

JFace viewers allow to display a domain model in a list, tree or table without converting the domain model beforehand Enhances reusability of components.

14

org.eclipse.jface.viewers.ListViewer Display a simple list org.eclipse.jface.viewers.TreeViewer Displays a tree org.eclipse.jface.viewers.TableViewer Displays a table

15

IStructuredContentProvider Used for lists and tables ITreeContentProvider Used for trees, has additional methods to determine the children and the parents of elements ILabelProvider=> LabelProvider Used for lists and trees, displays per element a icons and / or a text element. ITableLabelProvider =>LabelProvider Used for tables, displays per element and column a icons and / or a text element

16

public class Person {


private String firstName; private String lastName; private boolean married; private String gender; private Integer age; public Person() { } public Person(String firstName, String lastName, String gender, boolean married) { super(); this.firstName = firstName; this.lastName = lastName; this.gender = gender; this.married = married; } public String getFirstName() { return firstName; } public String getGender() { return gender; }

17

public String getLastName() { return lastName; } public boolean isMarried() { return married; } public void setFirstName(String firstName) { this.firstName = firstName); } public void setGender(String gender) { this.gender = gender); } public void setLastName(String lastName) { this.lastName = lastName); }
18

public void setMarried(boolean isMarried) { this.married = isMarried); } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age); } @Override public String toString() { return firstName + " " + lastName; } }
19

public class ModelProvider { private static ModelProvider content; private List<Person> persons; private ModelProvider() { persons = new ArrayList<Person>(); // Image here some fancy database access to read the persons and to // put them into the model Person person; person = new Person("Rainer", "Zufall", "male", true); persons.add(person); person = new Person("Rainer", "Babbel", "male", true); persons.add(person); person = new Person("Marie", "Darms", "female", false); persons.add(person); person = new Person("Holger", "Adams", "male", true); persons.add(person);

20

person = new Person("Juliane", "Adams", "female", true); persons.add(person); } public static ModelProvider getInstance() { if (content != null) { return content; } content = new ModelProvider(); return content; } public List<Person> getPersons() { return persons; } }

21

public class PersonContentProvider implements IStructuredContentProvider { @Override public Object[] getElements(Object inputElement) { List<Person> persons = (List<Person>) inputElement; return persons.toArray(); } @Override public void dispose() { } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }

22

public class PersonLabelProvider extends LabelProvider implements ITableLabelProvider { private static final Image CHECKED = Activator.getImageDescriptor( "icons/checked.gif").createImage(); private static final Image UNCHECKED = Activator.getImageDescriptor( "icons/unchecked.gif").createImage(); @Override public Image getColumnImage(Object element, int columnIndex) { // In case you don't like image just return null here if (columnIndex == 3) { if (((Person) element).isMarried()) { return CHECKED; } else { return UNCHECKED; } } return null; }

23

@Override public String getColumnText(Object element, int columnIndex) { Person person = (Person) element; switch (columnIndex) { case 0: return person.getFirstName(); case 1: return person.getLastName(); case 2: return person.getGender(); case 3: return String.valueOf(person.isMarried()); default: throw new RuntimeException("Should not happen"); } } }

24

private TableViewer viewer; public void createPartControl(Composite parent) { createViewer(parent); // Get the content for the viewer, setInput will call getElements in the // contentProvider viewer.setInput(ModelProvider.getInstance().getPersons()); } private void createViewer(Composite parent) { viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); createColumns(viewer); viewer.setContentProvider(new PersonContentProvider()); viewer.setLabelProvider(new PersonLabelProvider()); }

25

// This will create the columns for the table private void createColumns(TableViewer viewer) { String[] titles = { "First name", "Last name", "Gender", "Married" }; int[] bounds = { 100, 100, 100, 100 }; for (int i = 0; i < titles.length; i++) { TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE); column.getColumn().setText(titles[i]); column.getColumn().setWidth(bounds[i]); column.getColumn().setResizable(true); column.getColumn().setMoveable(true); } Table table = viewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); }
26

27

28

Under ApplicationWorkbenchWindowAdvisor Override postWindowOpen() super.postWindowOpen(); window = getWindowConfigurer().getWindow(); final Tray tray = window.getShell().getDisplay().getSystemTray(); TrayItem trayItem = new TrayItem(tray, SWT.NONE); trayImage = AbstractUIPlugin.imageDescriptorFromPlugin( com.magnus.training.app.hello", "/icons/alt_about.gif") .createImage(); trayItem.setImage(trayImage); trayItem.setToolTipText("TrayItem");

29

if (trayItem != null) { window.getShell().addShellListener(new ShellAdapter() { // If the window is minimized hide the window public void shellIconified(ShellEvent e) { window.getShell().setVisible(false); } }

30

Provide information about the possible inputs and status of a simple field, e.g. text field or combo box. org.eclipse.jface.fieldassist Provides assistance two ways : ControlDecorations place image decorations on SWT controls to show additional information about the control Content Proposalsallows to provide user input help for the possible choices for this field.

31

32

ControlDecoration deco = new ControlDecoration(text, SWT.LEFT); deco.setDescriptionText("Use CNTL + SPACE to see possible values"); deco.setImage(FieldDecorationRegistry.getDefault().getFieldDeco ration(FieldDecorationRegistry.DEC_INFORMATION).getImage() ); deco.setShowOnlyOnFocus(false); // Help the user with the possible inputs // "." and "#" will also activate the content proposals char[] autoActivationCharacters = new char[] { '.', '#' }; KeyStroke keyStroke;

33

try { keyStroke = KeyStroke.getInstance("Ctrl+Space"); ContentProposalAdapter adapter = new ContentProposalAdapter(text, new TextContentAdapter(), new SimpleContentProposalProvider(new String[] { "ProposalOne", "ProposalTwo", "ProposalThree" }), keyStroke, autoActivationCharacters); } catch (ParseException e) { e.printStackTrace(); }

34

Configure Wokbench window Views and Perspectives. Main Menu ,Pulldown Menu and toolbar Adding Actions SWT Dialogs and Jface Wizards,Jface viewers Adding Help Product and Branding Tits and Bits

35

S-ar putea să vă placă și