Java tutorial
/* * Created 21.08.2007 * * This file is part of the project Alricg. The file is copyright * protected and under the GNU General Public License. * For more information see "http://www.alricg.de/". */ package org.d3s.alricg.editor.views.charElemente; import org.d3s.alricg.common.icons.AbstractIconsLibrary; import org.d3s.alricg.common.icons.MagieIconsLibrary; import org.d3s.alricg.editor.common.CustomColumnLabelProvider; import org.d3s.alricg.editor.common.CustomColumnViewerSorter; import org.d3s.alricg.editor.common.Regulatoren; import org.d3s.alricg.editor.common.CustomColumnLabelProvider.ImageProvider; import org.d3s.alricg.editor.common.CustomColumnLabelProvider.ImageProviderRegulator; import org.d3s.alricg.editor.common.CustomColumnLabelProvider.ZauberVerbreitungProvider; import org.d3s.alricg.editor.common.Regulatoren.Regulator; import org.d3s.alricg.editor.common.ViewUtils.CharElementDragSourceListener; import org.d3s.alricg.editor.common.ViewUtils.TableViewContentProvider; import org.d3s.alricg.editor.common.ViewUtils.TreeObject; import org.d3s.alricg.editor.common.ViewUtils.TreeViewContentProvider; import org.d3s.alricg.editor.common.ViewUtils.ViewerSelectionListener; import org.d3s.alricg.editor.utils.EditorViewUtils; import org.d3s.alricg.editor.views.ViewMessages; import org.d3s.alricg.store.access.StoreDataAccessor; import org.d3s.alricg.store.charElemente.CharElement; import org.d3s.alricg.store.charElemente.MagieMerkmal; import org.d3s.alricg.store.charElemente.Zauber; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.window.ToolTip; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IViewPart; /** * @author Vincent * */ public class ZauberView extends RefreshableViewPartImpl { public static final String ID = "org.d3s.alricg.editor.views.ZauberView"; // ber diesen Regulator wird die Darstellung von Images gesteuert private final ImageProviderRegulator<MagieMerkmal> imageProviderRegulator; public ZauberView() { MagieIconsLibrary.getInstance().addConsumer(this); imageProviderRegulator = new ImageProviderRegulator<MagieMerkmal>() { public String getName(MagieMerkmal obj) { return obj.getName(); } public MagieMerkmal[] getItems(CharElement obj) { return ((Zauber) obj).getMerkmale(); } public AbstractIconsLibrary<MagieMerkmal> getIconsLibrary() { return MagieIconsLibrary.getInstance(); } public IViewPart getConsumer() { return ZauberView.this; } }; } /* (non-Javadoc) * @see org.d3s.alricg.editor.views.charElemente.RefreshableViewPart#createTable(org.eclipse.swt.widgets.Composite) */ @Override protected TableViewer createTable(Composite parent) { // init Table final TableViewer tableViewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); tableViewer.getTable().setLinesVisible(true); tableViewer.getTable().setHeaderVisible(true); ColumnViewerToolTipSupport.enableFor(tableViewer, ToolTip.NO_RECREATE); // Drag and Drop tableViewer.addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new CharElementDragSourceListener(tableViewer)); // Columns setzen TableViewerColumn tc = new TableViewerColumn(tableViewer, SWT.LEFT, 0); tableViewer.getTable().setSortColumn(tc.getColumn()); tc.getColumn().setText(ViewMessages.TalentView_Name); tc.setLabelProvider(new CustomColumnLabelProvider.NameLabelProvider()); tc.getColumn().setWidth(DEFAULT_FIRSTCOLUMN_WIDTH); tc.getColumn().addSelectionListener( new ViewerSelectionListener(new CustomColumnViewerSorter.NameSorter(), tableViewer)); tc = new TableViewerColumn(tableViewer, SWT.LEFT, 1); tc.getColumn().setText(ViewMessages.TalentView_Datei); tc.setLabelProvider(new CustomColumnLabelProvider.DateinameLabelProvider()); tc.getColumn().setWidth(125); tc.getColumn().setMoveable(true); tc.getColumn().addSelectionListener( new ViewerSelectionListener(new CustomColumnViewerSorter.DateiSorter(), tableViewer)); // Merkmale tc = new TableViewerColumn(tableViewer, SWT.LEFT, 2); tc.getColumn().setText("1"); tc.getColumn().setToolTipText("Magie-Merkmal 1"); tc.setLabelProvider(new ImageProvider(0, imageProviderRegulator)); tc.getColumn().setWidth(24); tc.getColumn().setMoveable(true); tc = new TableViewerColumn(tableViewer, SWT.LEFT, 3); tc.getColumn().setText("2"); tc.getColumn().setToolTipText("Magie-Merkmal 2"); tc.setLabelProvider(new ImageProvider(1, imageProviderRegulator)); tc.getColumn().setWidth(24); tc.getColumn().setMoveable(true); tc = new TableViewerColumn(tableViewer, SWT.LEFT, 4); tc.getColumn().setText("3"); tc.getColumn().setToolTipText("Magie-Merkmal 3"); tc.setLabelProvider(new ImageProvider(2, imageProviderRegulator)); tc.getColumn().setWidth(24); tc.getColumn().setMoveable(true); tc = new TableViewerColumn(tableViewer, SWT.LEFT, 5); tc.getColumn().setText("4"); tc.getColumn().setToolTipText("Magie-Merkmal 4+"); tc.setLabelProvider(new ImageProvider(3, imageProviderRegulator)); tc.getColumn().setWidth(30); tc.getColumn().setMoveable(true); // verbreitung tc = new TableViewerColumn(tableViewer, SWT.LEFT, 6); tc.getColumn().setText("Verbreitung"); tc.setLabelProvider(new ZauberVerbreitungProvider()); tc.getColumn().setWidth(125); tc.getColumn().setMoveable(true); tc = new TableViewerColumn(tableViewer, SWT.LEFT, 7); tc.getColumn().setText(ViewMessages.TalentView_Probe); tc.setLabelProvider(new CustomColumnLabelProvider.Faehigkeit3EigenschaftProvider()); tc.getColumn().setWidth(75); tc.getColumn().setMoveable(true); tc = new TableViewerColumn(tableViewer, SWT.LEFT, 8); tc.getColumn().setText(ViewMessages.TalentView_SKT); tc.setLabelProvider(new CustomColumnLabelProvider.SKTLabelProvider()); tc.getColumn().setWidth(50); tc.getColumn().setMoveable(true); tc.getColumn().addSelectionListener( new ViewerSelectionListener(new CustomColumnViewerSorter.SktSorter(), tableViewer)); tc = new TableViewerColumn(tableViewer, SWT.LEFT, 9); tc.getColumn().setText(ViewMessages.TalentView_Voraussetzung); tc.setLabelProvider(new CustomColumnLabelProvider.CharElementVoraussetzungProvider()); tc.getColumn().setWidth(150); tc.getColumn().setMoveable(true); tc.getColumn().addSelectionListener(new ViewerSelectionListener( new CustomColumnViewerSorter.CharElementVoraussetzungSorter(), tableViewer)); // Inhalt und Sortierung setzen tableViewer.setContentProvider(new TableViewContentProvider()); tableViewer.getTable().setSortDirection(SWT.UP); tableViewer.setSorter(new CustomColumnViewerSorter.NameSorter()); tableViewer.setInput(EditorViewUtils.buildEditorTableView(StoreDataAccessor.getInstance().getXmlAccessors(), getRegulator())); return tableViewer; } /* (non-Javadoc) * @see org.d3s.alricg.editor.views.charElemente.RefreshableViewPart#createTree(org.eclipse.swt.widgets.Composite) */ @Override protected TreeViewer createTree(Composite parent) { // Init Viewer final TreeViewer treeViewer = new TreeViewer(parent, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); treeViewer.getTree().setLinesVisible(true); treeViewer.getTree().setHeaderVisible(true); ColumnViewerToolTipSupport.enableFor(treeViewer, ToolTip.NO_RECREATE); // Drag and Drop treeViewer.addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new CharElementDragSourceListener(treeViewer)); // Columns TreeViewerColumn tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 0); tc.getColumn().setText(ViewMessages.TalentView_Name); treeViewer.getTree().setSortColumn(tc.getColumn()); tc.setLabelProvider(new CustomColumnLabelProvider.NameLabelProvider()); tc.getColumn().setWidth(DEFAULT_FIRSTCOLUMN_WIDTH); tc.getColumn().addSelectionListener( new ViewerSelectionListener(new CustomColumnViewerSorter.NameSorter(), treeViewer)); tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 1); tc.getColumn().setText(ViewMessages.TalentView_Datei); tc.setLabelProvider(new CustomColumnLabelProvider.DateinameLabelProvider()); tc.getColumn().setWidth(125); tc.getColumn().setMoveable(true); tc.getColumn().addSelectionListener( new ViewerSelectionListener(new CustomColumnViewerSorter.DateiSorter(), treeViewer)); // Merkmale tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 2); tc.getColumn().setText("1"); tc.getColumn().setToolTipText("Magie-Merkmal 1"); tc.setLabelProvider(new ImageProvider(0, imageProviderRegulator)); tc.getColumn().setWidth(24); tc.getColumn().setMoveable(true); tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 3); tc.getColumn().setText("2"); tc.getColumn().setToolTipText("Magie-Merkmal 2"); tc.setLabelProvider(new ImageProvider(1, imageProviderRegulator)); tc.getColumn().setWidth(24); tc.getColumn().setMoveable(true); tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 4); tc.getColumn().setText("3"); tc.getColumn().setToolTipText("Magie-Merkmal 3"); tc.setLabelProvider(new ImageProvider(2, imageProviderRegulator)); tc.getColumn().setWidth(24); tc.getColumn().setMoveable(true); tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 5); tc.getColumn().setText("4"); tc.getColumn().setToolTipText("Magie-Merkmal 4+"); tc.setLabelProvider(new ImageProvider(3, imageProviderRegulator)); tc.getColumn().setWidth(29); tc.getColumn().setMoveable(true); // verbreitung tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 6); tc.getColumn().setText("Verbreitung"); tc.setLabelProvider(new ZauberVerbreitungProvider()); tc.getColumn().setWidth(125); tc.getColumn().setMoveable(true); tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 7); tc.getColumn().setText(ViewMessages.TalentView_Probe); tc.setLabelProvider(new CustomColumnLabelProvider.Faehigkeit3EigenschaftProvider()); tc.getColumn().setWidth(75); tc.getColumn().setMoveable(true); tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 8); tc.getColumn().setText(ViewMessages.TalentView_SKT); tc.setLabelProvider(new CustomColumnLabelProvider.SKTLabelProvider()); tc.getColumn().setWidth(50); tc.getColumn().setMoveable(true); tc.getColumn().addSelectionListener( new ViewerSelectionListener(new CustomColumnViewerSorter.SktSorter(), treeViewer)); tc = new TreeViewerColumn(treeViewer, SWT.LEFT, 9); tc.getColumn().setText(ViewMessages.TalentView_Voraussetzung); tc.setLabelProvider(new CustomColumnLabelProvider.CharElementVoraussetzungProvider()); tc.getColumn().setWidth(150); tc.getColumn().setMoveable(true); tc.getColumn().addSelectionListener(new ViewerSelectionListener( new CustomColumnViewerSorter.CharElementVoraussetzungSorter(), treeViewer)); // Inhalt und Sortierung setzen TreeObject root = EditorViewUtils.buildEditorTreeView(StoreDataAccessor.getInstance().getXmlAccessors(), getRegulator()); treeViewer.setContentProvider(new TreeViewContentProvider(root)); treeViewer.getTree().setSortDirection(SWT.DOWN); treeViewer.setSorter(new CustomColumnViewerSorter.NameSorter()); treeViewer.setInput(root); return treeViewer; } /* (non-Javadoc) * @see org.d3s.alricg.editor.views.charElemente.RefreshableViewPart#getRegulator() */ @Override public Regulator getRegulator() { return Regulatoren.ZauberRegulator; } /* (non-Javadoc) * @see org.d3s.alricg.editor.views.charElemente.RefreshableViewPart#getViewedClass() */ @Override public Class getViewedClass() { return Zauber.class; } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#dispose() */ @Override public void dispose() { MagieIconsLibrary.getInstance().removeConsumer(this); super.dispose(); } /** * Fr die Darstellung der Merkmale als Bilder und ToolTip * @author Vincent * public static class ZauberMerkmalProvider extends ColumnLabelProvider { private static final int ANZAHL_MERKMAL_SPALTEN = 4; private final int index; private final ZauberView consumer; public ZauberMerkmalProvider(int index, ZauberView consumer) { this.index = index; this.consumer = consumer; } @Override public String getText(Object element) { if (index+1 < ANZAHL_MERKMAL_SPALTEN) return ""; final CharElement charElem = ViewUtils.getCharElement(element); if (charElem == null) return ""; if (charElem instanceof Zauber) { if ( ((Zauber) charElem).getMerkmale().length >= ANZAHL_MERKMAL_SPALTEN) { return "+"; } } return ""; } @Override public Image getImage(Object element) { final CharElement charElem = ViewUtils.getCharElement(element); if (charElem == null) return null; if (charElem instanceof Zauber && ((Zauber) charElem).getMerkmale().length > index) { return MagieIconsLibrary.getInstance().getImage16( ((Zauber) charElem).getMerkmale()[index], consumer); } return null; } @Override public String getToolTipText(Object element) { final CharElement charElem = ViewUtils.getCharElement(element); if (charElem == null) return null; if ( !(charElem instanceof Zauber) ) return null; String retStr = ""; if ( ((Zauber) charElem).getMerkmale().length > index ) { retStr = ((Zauber) charElem).getMerkmale()[index].getValue(); } if (index+1 >= ANZAHL_MERKMAL_SPALTEN && ((Zauber) charElem).getMerkmale().length >= ANZAHL_MERKMAL_SPALTEN) { for (int i = index+1; i < ((Zauber) charElem).getMerkmale().length; i++) { retStr = retStr + ", " + ((Zauber) charElem).getMerkmale()[i]; } } return retStr; } @Override public Image getToolTipImage(Object element) { final CharElement charElem = ViewUtils.getCharElement(element); if (charElem == null) return null; if ( !(charElem instanceof Zauber && ((Zauber) charElem).getMerkmale().length > index)) { return null; } // Image erzeugen final Image img = MagieIconsLibrary.getInstance().getImageDescriptor24( ((Zauber) charElem).getMerkmale()[index]).createImage(); // Dispose Image final Display d = consumer.getTableViewer().getTable().getShell().getDisplay(); d.timerExec (100, new Runnable () { public void run () { img.dispose(); } }); return img; } }*/ }