// $Id$
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.view.datasource;
+import info.bioinfweb.commons.bio.biojava3.alignment.SimpleAlignment;
+import info.bioinfweb.commons.bio.biojava3.alignment.template.Alignment;
+import info.bioinfweb.commons.bio.biojava3.core.sequence.compound.AlignmentAmbiguityNucleotideCompoundSet;
+import info.bioinfweb.libralign.AlignmentArea;
+import info.bioinfweb.libralign.dataarea.implementations.ConsensusSequenceArea;
+import info.bioinfweb.libralign.pherogram.BioJavaPherogramProvider;
+import info.bioinfweb.libralign.pherogram.PherogramFormats.QualityOutputType;
+import info.bioinfweb.libralign.pherogram.PherogramHeadingView;
+import info.bioinfweb.libralign.pherogram.PherogramTraceCurveView;
+import info.bioinfweb.libralign.sequenceprovider.implementations.BioJavaSequenceDataProvider;
+import info.bioinfweb.libralign.sequenceprovider.tokenset.BioJavaTokenSet;
+
+import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.common.NotDefinedException;
+import org.biojava.bio.chromatogram.ChromatogramFactory;
+import org.biojava.bio.chromatogram.UnsupportedChromatogramFormatException;
+import org.biojava3.core.sequence.DNASequence;
+import org.biojava3.core.sequence.compound.NucleotideCompound;
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.GroupMarker;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
-import org.springframework.security.core.GrantedAuthority;
import eu.etaxonomy.cdm.config.ICdmSource;
-import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
import eu.etaxonomy.taxeditor.model.ContextListenerAdapter;
import eu.etaxonomy.taxeditor.model.IContextListener;
import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
* <p>CdmDataSourceViewPart class.</p>
* @version 1.0
*/
public class CdmDataSourceViewPart extends ViewPart{
-
+
private static final Logger logger = Logger.getLogger(CdmDataSourceViewPart.class);
-
+
private class ContextListener extends ContextListenerAdapter{
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.model.IContextListener#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
@Override
public void contextAboutToStop(IMemento memento, IProgressMonitor monitor) {
monitor.subTask("Refreshing Datasource View");
- viewer.refresh();
+ viewer.refresh();
}
/* (non-Javadoc)
@Override
public void contextStop(IMemento memento, IProgressMonitor monitor) {
monitor.subTask("Refreshing Datasource View");
- viewer.refresh();
+ viewer.refresh();
}
/* (non-Javadoc)
viewer.refresh();
}
}
-
+
private class DataSourceJob extends Job{
- private List<ICdmSource> cdmSources;
+ private final List<ICdmSource> cdmSources;
/**
* @param name
public IStatus run(final IProgressMonitor monitor) {
try{
logger.debug("Begin of eclipse core runtime Job to Retrieve datasources");
- monitor.beginTask("Retrieving datasources", cdmSources.size() + 1);
-
+ monitor.beginTask("Retrieving datasources", cdmSources.size() + 1);
+
final List<CdmMetaDataAwareDataSourceContainer> containers = new ArrayList<CdmMetaDataAwareDataSourceContainer>();
-
+
for(ICdmSource cdmSource : cdmSources){
containers.add(new CdmMetaDataAwareDataSourceContainer(cdmSource));
}
-
+
Display.getDefault().asyncExec(new Runnable() {
-
+
@Override
public void run() {
viewer.setInput(containers);
}
});
monitor.worked(1);
-
+
for(final CdmMetaDataAwareDataSourceContainer container : containers){
-
-
- if(logger.isDebugEnabled()) logger.debug(" #" + container.hashCode() + " : next DataSourceContainer");
+
+
+ if(logger.isDebugEnabled()) {
+ logger.debug(" #" + container.hashCode() + " : next DataSourceContainer");
+ }
container.getMetaDataFromDataSource();
- if(logger.isDebugEnabled()) logger.debug(" #" + container.hashCode() + " : metadata retrieved, creating new runnable ...");
+ if(logger.isDebugEnabled()) {
+ logger.debug(" #" + container.hashCode() + " : metadata retrieved, creating new runnable ...");
+ }
Display.getDefault().asyncExec(new Runnable() {
-
+
@Override
public void run() {
- if(logger.isDebugEnabled()) logger.debug(" #" + container.hashCode() + " starting sub thread to update ...");
+ if(logger.isDebugEnabled()) {
+ logger.debug(" #" + container.hashCode() + " starting sub thread to update ...");
+ }
viewer.update(container, null);
- if(logger.isDebugEnabled()) logger.debug(" #" + container.hashCode() + " end of sub thread to update ...");
+ if(logger.isDebugEnabled()) {
+ logger.debug(" #" + container.hashCode() + " end of sub thread to update ...");
+ }
}
});
- if(logger.isDebugEnabled()) logger.debug(" #" + container.hashCode() + " done");
+ if(logger.isDebugEnabled()) {
+ logger.debug(" #" + container.hashCode() + " done");
+ }
monitor.worked(1);
}
-
+
}finally{
monitor.done();
}
return Status.OK_STATUS;
}
}
-
+
/** Constant <code>ID="eu.etaxonomy.taxeditor.store.datasource"{trunked}</code> */
public static String ID = "eu.etaxonomy.taxeditor.view.datasource";
-
+
private TableViewer viewer;
private String partNameCache;
private IWorkbenchSiteProgressService service;
-
+
private IContextListener contextListener;
private CdmDataSourceViewerComparator comparator;
-
+
/**
* <p>Constructor for CdmDataSourceViewPart.</p>
*/
public CdmDataSourceViewPart(){
}
-
+
+ private void librAlignInit(Composite parent){
+ ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+ scrolledComposite.setExpandHorizontal(true);
+ scrolledComposite.setExpandVertical(true);
+
+ Alignment<DNASequence, NucleotideCompound> alignment =
+ new SimpleAlignment<DNASequence, NucleotideCompound>();
+ alignment.add("Sequence 1", new DNASequence("ATCGTAGATCGTAGATCGTAGATCGTAGATCGTAGATCGTAGATCGTAG"));
+ alignment.add("Sequence 2", new DNASequence("AT-GTTG"));
+ alignment.add("Sequence 3", new DNASequence("AT-GTAG"));
+
+ BioJavaSequenceDataProvider<DNASequence, NucleotideCompound> sequenceProvider =
+ new BioJavaSequenceDataProvider<DNASequence, NucleotideCompound>(
+ new BioJavaTokenSet<NucleotideCompound>(
+ AlignmentAmbiguityNucleotideCompoundSet.getAlignmentAmbiguityNucleotideCompoundSet()),
+ alignment);
+
+ AlignmentArea result = new AlignmentArea();
+ result.setSequenceProvider(sequenceProvider, false);
+ result.getDataAreas().getBottomAreas().add(new ConsensusSequenceArea(result));
+
+// Composite alignmentWidget = result.createSWTWidget(scrolledComposite, SWT.NONE);
+// scrolledComposite.setContent(alignmentWidget);
+// scrolledComposite.setMinSize(alignmentWidget.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+ //+++ConsensusSequenceArea
+ ConsensusSequenceArea consensusSequenceArea = new ConsensusSequenceArea(result);
+ Composite consensusWidget = consensusSequenceArea.createSWTWidget(scrolledComposite, SWT.NONE);
+ scrolledComposite.setContent(consensusWidget);
+
+
+ //+++PherogramTraceCurveView+++
+ PherogramTraceCurveView pherogramView = new PherogramTraceCurveView();
+ // pherogramView.setProvider(new BioJavaPherogramProvider(ChromatogramFactory.create(
+ // new File("data\\pherograms\\Test_pel1PCR_Pel2Wdhg_PCR-7-A_1.ab1"))));
+ try {
+ pherogramView.setProvider(new BioJavaPherogramProvider(ChromatogramFactory.create(
+ new File("/home/pplitzner/svn/branch/taxeditor-3.4/eu.etaxonomy.taxeditor.store/lib/jfreechart-1.0.17/lib/A10001_GM106-petD_F.scf"))));
+ } catch (UnsupportedChromatogramFormatException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ pherogramView.setHorizontalScale(1);
+ pherogramView.setVerticalScale(100);
+ pherogramView.getFormats().setQualityOutputType(QualityOutputType.ALL);
+ pherogramView.getFormats().setShowProbabilityValues(true);
+
+// Composite pherogramWidget = pherogramView.createSWTWidget(scrolledComposite, SWT.NONE);
+// scrolledComposite.setContent(pherogramWidget);
+// scrolledComposite.setMinSize(pherogramWidget.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+ //+++Pherogramm Heading View+++
+ PherogramHeadingView pherogramHeadingView = new PherogramHeadingView(pherogramView);
+// Composite pherogramHeadingWidget = pherogramHeadingView.createSWTWidget(scrolledComposite, SWT.NONE);
+// scrolledComposite.setContent(pherogramHeadingWidget);
+// scrolledComposite.setMinSize(pherogramHeadingWidget.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+
+ }
+
/** {@inheritDoc} */
@Override
public void createPartControl(Composite parent) {
service = (IWorkbenchSiteProgressService) getSite().getAdapter(IWorkbenchSiteProgressService.class);
contextListener = new ContextListener();
CdmStore.getContextManager().addContextListener(contextListener);
-
+
// Create top composite
FillLayout fillLayout = new FillLayout();
fillLayout.marginWidth = 0;
fillLayout.marginHeight = 0;
- fillLayout.type = SWT.VERTICAL;
+ fillLayout.type = SWT.VERTICAL;
parent.setLayout(fillLayout);
-
- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
- | SWT.V_SCROLL | SWT.FULL_SELECTION);
- getSite().setSelectionProvider(viewer);
-
- createColumns(viewer);
-
- viewer.setContentProvider(new CdmDataSourceContentProvider());
- viewer.setLabelProvider(new CdmDataSourceLabelProvider());
- comparator = new CdmDataSourceViewerComparator();
- viewer.setComparator(comparator);
-
-
- // register context menu
- MenuManager menuMgr = new MenuManager();
- menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
- getSite().registerContextMenu(menuMgr, viewer);
-
- Control control = viewer.getControl();
- Menu menu = menuMgr.createContextMenu(control);
- control.setMenu(menu);
-
- // connect on doubleclick
- viewer.addDoubleClickListener(new IDoubleClickListener() {
-
- public void doubleClick(DoubleClickEvent event) {
- if (event.getSelection() instanceof StructuredSelection) {
-
- Object element = ((StructuredSelection) event
- .getSelection()).getFirstElement();
- if (element instanceof CdmMetaDataAwareDataSourceContainer) {
- String commandId = "eu.etaxonomy.taxeditor.store.datasource.change";
-
- ICommandService commandService = (ICommandService)getSite().getService(ICommandService.class);
-
- Command command = commandService.getCommand(commandId);
- if(command.isEnabled()) {
-
- IHandlerService handlerService = (IHandlerService) StoreUtil.getService(IHandlerService.class);
-
- try {
- handlerService.executeCommand(commandId, null);
- } catch (ExecutionException e) {
- StoreUtil.error(this.getClass(), e);
- } catch (NotDefinedException e) {
- StoreUtil.error(this.getClass(), e);
- } catch (NotEnabledException e) {
- StoreUtil.error(this.getClass(), e);
- } catch (NotHandledException e) {
- StoreUtil.error(this.getClass(), e);
- }
- }
- }
- }
- }
- });
-
- refresh();
+
+ librAlignInit(parent);
+
+
+// viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
+// | SWT.V_SCROLL | SWT.FULL_SELECTION);
+// getSite().setSelectionProvider(viewer);
+//
+// createColumns(viewer);
+//
+// viewer.setContentProvider(new CdmDataSourceContentProvider());
+// viewer.setLabelProvider(new CdmDataSourceLabelProvider());
+// comparator = new CdmDataSourceViewerComparator();
+// viewer.setComparator(comparator);
+//
+//
+// // register context menu
+// MenuManager menuMgr = new MenuManager();
+// menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
+// getSite().registerContextMenu(menuMgr, viewer);
+//
+// Control control = viewer.getControl();
+// Menu menu = menuMgr.createContextMenu(control);
+// control.setMenu(menu);
+//
+// // connect on doubleclick
+// viewer.addDoubleClickListener(new IDoubleClickListener() {
+//
+// @Override
+// public void doubleClick(DoubleClickEvent event) {
+// if (event.getSelection() instanceof StructuredSelection) {
+//
+// Object element = ((StructuredSelection) event
+// .getSelection()).getFirstElement();
+// if (element instanceof CdmMetaDataAwareDataSourceContainer) {
+// String commandId = "eu.etaxonomy.taxeditor.store.datasource.change";
+//
+// ICommandService commandService = (ICommandService)getSite().getService(ICommandService.class);
+//
+// Command command = commandService.getCommand(commandId);
+// if(command.isEnabled()) {
+//
+// IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
+//
+// try {
+// handlerService.executeCommand(commandId, null);
+// } catch (ExecutionException e) {
+// AbstractUtility.error(this.getClass(), e);
+// } catch (NotDefinedException e) {
+// AbstractUtility.error(this.getClass(), e);
+// } catch (NotEnabledException e) {
+// AbstractUtility.error(this.getClass(), e);
+// } catch (NotHandledException e) {
+// AbstractUtility.error(this.getClass(), e);
+// }
+// }
+// }
+// }
+// }
+// });
+//
+// refresh();
}
-
+
// This will create the columns for the table
private void createColumns(TableViewer viewer) {
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
table.setSortDirection(SWT.UP);
-
+
}
-
+
/**
* <p>refresh</p>
*/
- public void refresh(){
+ public void refresh(){
getService().schedule(new DataSourceJob("Loading datasources", CdmDataSourceRepository.getAll()), Job.LONG);
}
/** {@inheritDoc} */
@Override
public void setFocus() {
- viewer.getControl().setFocus();
+// viewer.getControl().setFocus();
}
-
+
/* (non-Javadoc)
* @see org.eclipse.ui.part.WorkbenchPart#showBusy(boolean)
*/
public IWorkbenchSiteProgressService getService() {
return service;
}
-
+
private SelectionAdapter getSelectionAdapter(final TableColumn column,
final int index) {
SelectionAdapter selectionAdapter = new SelectionAdapter() {