import org.biojava.bio.chromatogram.ChromatogramFactory;
import org.biojava.bio.chromatogram.UnsupportedChromatogramFormatException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.Action;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.part.EditorPart;
public static final String DEFAULT_READ_NAME_PREFIX = "Read ";
public static final String CONSENSUS_NAME = "Consensus";
-
private final ConversationHolder conversationHolder;
private final AlignmentModelChangeListener DIRTY_LISTENER = new AlignmentModelChangeListener() {
@Override
private final Map<Integer, SingleReadAlignment> cdmMap = new TreeMap<Integer, SingleReadAlignment>(); //TODO Move this to ContigSequenceDataProvider
private boolean dirty = false;
-
public AlignmentEditor() {
super();
conversationHolder = CdmStore.createConversation();
//conversationHolder = null;
}
-
private void refreshToolbarElement(String id) {
ICommandService commandService =
(ICommandService)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getService(ICommandService.class);
}
}
-
private void registerEditSettingListener(MultipleAlignmentsContainer container) {
- container.getEditSettings().addListener(new EditSettingsListener() {
- @Override
- public void workingModeChanged(EditSettingsChangeEvent e) {} // Currently nothing to do
-
- @Override
- public void insertLeftInDataAreaChanged(EditSettingsChangeEvent e) {
- updateStatusBar();
- refreshToolbarElement(ToggleLeftRightInsertionHandler.COMMAND_ID);
- }
-
- @Override
- public void insertChanged(EditSettingsChangeEvent e) {
- updateStatusBar();
- refreshToolbarElement(ToggleInsertOverwriteHandler.COMMAND_ID);
- }
- });
+ container.getEditSettings().addListener(new EditSettingsListener() {
+ @Override
+ public void workingModeChanged(EditSettingsChangeEvent e) {} // Currently nothing to do
+
+ @Override
+ public void insertLeftInDataAreaChanged(EditSettingsChangeEvent e) {
+ updateStatusBar();
+ refreshToolbarElement(ToggleLeftRightInsertionHandler.COMMAND_ID);
+ }
+
+ @Override
+ public void insertChanged(EditSettingsChangeEvent e) {
+ updateStatusBar();
+ refreshToolbarElement(ToggleInsertOverwriteHandler.COMMAND_ID);
+ }
+ });
}
return result;
}
-
private AlignmentArea createConsensusHintArea(MultipleAlignmentsContainer container,
AlignmentArea labeledArea) {
return result;
}
-
private MultipleAlignmentsContainer getAlignmentsContainer() {
if (alignmentsContainer == null) {
alignmentsContainer = new MultipleAlignmentsContainer();
return alignmentsContainer;
}
-
public AlignmentArea getReadsArea() {
return getAlignmentsContainer().getAlignmentAreas().get(READS_AREA_INDEX);
}
-
private AlignmentArea getEditableConsensusArea() {
return getAlignmentsContainer().getAlignmentAreas().get(EDITABLE_CONSENSUS_AREA_INDEX);
}
-
public boolean hasPherogram(int sequenceID) {
return getReadsArea().getDataAreas().getSequenceAreas(sequenceID).size() > PHEROGRAM_AREA_INDEX;
}
-
public PherogramArea getPherogramArea(int sequenceID) {
if (hasPherogram(sequenceID)) {
return (PherogramArea)getReadsArea().getDataAreas().getSequenceAreas(sequenceID).get(PHEROGRAM_AREA_INDEX);
}
}
-
private ConsensusSequenceArea getConsensusHintDataArea() {
return (ConsensusSequenceArea)getAlignmentsContainer().getAlignmentAreas().
get(CONSENSUS_HINT_AREA_INDEX).getDataAreas().getBottomAreas().
get(CONSENSUS_DATA_AREA_INDEX);
}
-
@Deprecated //TODO Remove as soon as testing period is over
private void createTestContents() {
// Just for testing:
}
}
-
private void readCDMData(Sequence sequenceNode) {
//TODO If called from somewhere else than createPartControl() the editorInput needs to be checked and previous contents need to be cleared (or updated).
//TODO Can the consensus sequence also be null? / Should it be created here, if nothing is in the DB?
}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
@Override
public void createPartControl(Composite parent) {
SWTComponentFactory.getInstance().getSWTComponent(getAlignmentsContainer(), parent, SWT.NONE);
}
}
-
private void updateStatusBar() {
IActionBars bars = getEditorSite().getActionBars();
bars.getStatusLineManager().setMessage("Edit mode: " +
(getReadsArea().getEditSettings().isInsertLeftInDataArea() ? "Left" : "Right"));
}
-
private SingleReadAlignment.Shift[] convertToCDMShifts(PherogramAreaModel model) {
Iterator<ShiftChange> iterator = model.shiftChangeIterator();
List<Shift> shifts = new ArrayList<SingleReadAlignment.Shift>();
return shifts.toArray(new Shift[]{});
}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void doSave(IProgressMonitor monitor) {
if (getEditorInput() instanceof AlignmentEditorInput) {
}
}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#doSaveAs()
- */
@Override
public void doSaveAs() {}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
- */
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
setInput(input);
- System.out.println("AlignmentEditor.init(): " + ActionFactory.COPY.getId());
- site.getActionBars().setGlobalActionHandler(ActionFactory.COPY.getId(), new Action(ActionFactory.COPY.getId()) {
- @Override
- public boolean isEnabled() {
- System.out.println("isEnabled()");
- return true;
- }
-
- @Override
- public void run() {
- System.out.println("run");
- super.run();
- }
- });
}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#isDirty()
- */
@Override
public boolean isDirty() {
return dirty;
}
-
private void setDirty() {
dirty = true;
firePropertyChange(IEditorPart.PROP_DIRTY);
}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
- */
@Override
public boolean isSaveAsAllowed() {
return false; // "Save as" not allowed.
}
-
@Override
public void setFocus() {
if(conversationHolder!=null){
}
}
-
public boolean isInsertMode() {
return getAlignmentsContainer().getEditSettings().isInsert();
}
return getAlignmentsContainer().getEditSettings().isInsertLeftInDataArea();
}
-
public void toggleLeftRightInsertionInPherogram() {
getAlignmentsContainer().getEditSettings().toggleInsertLeftInDataArea();
}
-
public void toggleInsertOverwrite() {
getAlignmentsContainer().getEditSettings().toggleInsert();
}
-
private String cutPherogram(boolean left) {
SelectionModel selection = getReadsArea().getSelection();
if (selection.getCursorHeight() != 1) {
}
}
-
public String cutPherogramLeft() {
return cutPherogram(true);
}
-
public String cutPherogramRight() {
return cutPherogram(false);
}
-
public void reverseComplementSelectedSequences() {
SelectionModel selection = getReadsArea().getSelection();
AlignmentModel<?> model = getReadsArea().getAlignmentModel();
}
}
-
/**
* Recreates the whole consensus sequence from all single read sequences. The previous consensus
* sequence is overwritte.
model.insertTokensAt(sequenceID, 0, tokens);
}
-
/**
* Updates the current consensus sequence by replacing gaps by the according consensus tokens
* calculated from the single read sequences and extends the consensus sequence if necessary.
}
}
-
public static PherogramProvider readPherogram(URI uri) throws IOException, UnsupportedChromatogramFormatException {
PherogramProvider result;
InputStream stream = uri.toURL().openStream();
return result;
}
-
private String newReadName() {
int index = 1;
while (getReadsArea().getAlignmentModel().sequenceIDByName(DEFAULT_READ_NAME_PREFIX + index)
return DEFAULT_READ_NAME_PREFIX + index;
}
-
public void addRead(URI pherogramURI, boolean reverseComplemented) throws IOException, UnsupportedChromatogramFormatException {
addRead(newReadName(), pherogramURI, reverseComplemented, null, null, null, null, null);
}
-
/**
* Adds a new sequence with attached phergram data area to the reads alignment.
* <p>