package com.weecode.plugin.comics.ui.views; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Table; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.ViewPart; import com.weecode.plugin.comics.model.PublishersModel; import com.weecode.plugin.comics.model.eo.Publisher; import com.weecode.plugin.comics.ui.editors.PublishersEditor; import com.weecode.plugin.comics.ui.editors.PublishersEditorInput; /** * * @author Jason Kusnier and Tim Hollosy * */ public class PublishersView extends ViewPart { private Action refreshAction; private Action initAction; public static final String ID = "com.weecode.plugin.comics.ui.views.PublishersView"; //$NON-NLS-1$ private TableViewer tableViewer; private Table table; private PublishersModel model = null; private Display display; class ViewLablProvider implements ITableLabelProvider { @Override public Image getColumnImage(Object element, int columnIndex) { return null; } @Override public String getColumnText(Object element, int columnIndex) { return ((Publisher)element).getName(); } @Override public void addListener(ILabelProviderListener listener) { } @Override public void dispose() { } @Override public boolean isLabelProperty(Object element, String property) { return false; } @Override public void removeListener(ILabelProviderListener listener) { } } @Override public void dispose() { if (model != null) model.close(); super.dispose(); } /** * Create contents of the view part * @param parent */ @Override public void createPartControl(Composite parent) { this.display = parent.getDisplay(); Composite container = new Composite(parent, SWT.NONE); container.setLayout(new FillLayout()); tableViewer = new TableViewer(container, SWT.BORDER); tableViewer.setContentProvider(new ArrayContentProvider()); tableViewer.setLabelProvider(new ViewLablProvider()); table = tableViewer.getTable(); table.setLinesVisible(true); table.setHeaderVisible(true); tableViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { IStructuredSelection sel = (IStructuredSelection)event.getSelection(); Publisher publisher = (Publisher)sel.getFirstElement(); PublishersEditorInput input = new PublishersEditorInput(publisher); try { getSite().getPage().openEditor(input, PublishersEditor.ID); } catch (PartInitException e) { e.printStackTrace(); } } }); createActions(); initializeToolBar(); initializeMenu(); initAction.run(); } /** * Create the actions */ private void createActions() { initAction = new Action("Init") { @Override public void run() { Job job = new Job("Init View...") { @Override protected IStatus run(IProgressMonitor monitor) { model = new PublishersModel(); display.syncExec(new Runnable() { @Override public void run() { tableViewer.setInput(model.getPublishers().toArray()); } }); return Status.OK_STATUS; } }; job.schedule(); } }; refreshAction = new Action("Refresh") { @Override public void run() { Job job = new Job("Init View...") { @Override protected IStatus run(IProgressMonitor monitor) { model.refresh(); display.syncExec(new Runnable() { @Override public void run() { tableViewer.setInput(model.getPublishers().toArray()); } }); return Status.OK_STATUS; } }; job.schedule(); } }; // Create the actions } /** * Initialize the toolbar */ private void initializeToolBar() { IToolBarManager toolbarManager = getViewSite().getActionBars().getToolBarManager(); toolbarManager.add(refreshAction); } /** * Initialize the menu */ private void initializeMenu() { IMenuManager menuManager = getViewSite().getActionBars().getMenuManager(); } @Override public void setFocus() { // Set the focus } }