1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
MauveFrame has the menu items, an AlignFrame and A DnDRearrangementPanel.
AlignFrame provides a GUI interface to the alignment tool, and so is of
no consequence at the moment.
DnDRearrangementPanel extends RearrangmentPanel by allowing drag-and-drop
opening of alignment files. This is especially useful for setting up the
viewing window with multiple alignments.
RearrangementPanel is the mother of all GUI elements.
============
Initial plan of attack:
RearrangementPanel currently maintains two parallel Vectors of RulePanels and
RRSequencePanels, as well as a bunch of arrays and some fields that constitute
the data model for the application. We need to add to this some number of
panels containing feature data a la FastBeadDemo.
Rather than further complicate an already overly large class, I will convert the
RearrangementPanel into (basically) an association of a collection of child panels,
each of which will contain a ruler, sequence and optional feature display. The
RearrangementPanel will also maintain a reference to a separate data model. This
data model will contain the arrays etc that the RearrangementPanel currently holds,
plus whatever additional data is necessary for the feature display.
============
General problems
- Data model and GUI code are too intertwined
- Lots of commented-out code
- No tests, manual or otherwise
- Spotty comments
============
How sequencePanel vector is used:
DnDRearrangementPanel:
drag
- To determine the target for dragging
* drop
- To determine the sequencePanel target for dropping
- To determine the rulerPanel target for dropping
LcbLinePanel
- To obtain LCBs that should be connected
RearrangementPanel
actionPerformed
- to add or remove mouse listeners when the hand button is activated
*X alignView
- to find the viewable range(*) given a clicked-on sequence
- to adjust the viewable range for all the other sequences
- to adjust the viewable range for all the other rulers
highlightRegions
- to iterate through sequences, clearing highlighting and then redrawing. In some indirect way, this causes the highlight lines to move around under the mouse.
*X initMatchDisplay
- Add a ruler for each sequence in the model
- Add a sequencePanel for each sequence in the model.
keyPressed
- to iterate through sequences, toggling different pieces of the display of each sequence (boxes, lines, etc)
* layoutDisplay
- to iterate through sequences, forcing their being relaid-out
- includes relaying-out ruler
print
- to iterate through sequences, doing some stuff for printing (seems to construct a different layout for printing, I think).
* reorderSequences
- to put sequencePanels in a different order, based on an array of integers
- to put rulerPanels in a different order, based on an array of integers
- sequencePanels vector is replaced entirely in this method
- rulerPanels vector is replaced entirely in this method
*X repaintSequencePanels
- to iterate through and repaint every sequence and ruler panel
stateChanged
- to iterate through sequences and either show blocky or non-block stuff
* zoomAndMove
- to iterate through sequences and change their viewable ranges, redraw.
- to iterate through rulers and change their viewable ranges, redraw.
==============================
Matches XMFA LCBs Sim
MUMS X
MAUVE X X
XMFA * X X X
* XMFA matches come from the XMFA file, used differently.
|