Skip to content

Commit

Permalink
Merge pull request #61 from aguynamedryan/issue_34
Browse files Browse the repository at this point in the history
I feel like it's bad form to merge in my own pull request without waiting for someone else to review it, but I have colleagues waiting on this set of changes.
  • Loading branch information
aguynamedryan committed May 27, 2015
2 parents 8878f86 + 0a7e0c8 commit 9f629fd
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 19 deletions.
4 changes: 4 additions & 0 deletions src/org/ohdsi/rabbitInAHat/Arrow.java
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,10 @@ public Color fillColor() {
return color;
}
}

public boolean isHighlighted() {
return (source != null && source.isSelected()) || (target != null && target.isSelected());
}

public static void drawArrowHead(Graphics2D g2d, int x, int y) {
int nPoints = 3;
Expand Down
83 changes: 64 additions & 19 deletions src/org/ohdsi/rabbitInAHat/MappingPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ public void paint(Graphics g) {
if (component != dragRectangle)
component.paint(g2d);

for (Arrow component : arrows)
for (Arrow component : normalArrows())
if (component != dragArrow)
component.paint(g2d);

Expand All @@ -244,7 +244,11 @@ public void paint(Graphics g) {

if (dragArrow != null)
dragArrow.paint(g2d);


for (Arrow component : highlightedArrows())
if (component != dragArrow)
component.paint(g2d);

if (offscreen != null)
g.drawImage(offscreen, 0, 0, this);
}
Expand All @@ -258,6 +262,11 @@ private void addLabel(Graphics2D g2d, String string, int x, int y) {

@Override
public void mouseClicked(MouseEvent event) {
// Save away which arrows are currently highlighted vs normal before we
// de-select all the tables and arrows
List<Arrow> currentlyHighlightedArrows = highlightedArrows();
List<Arrow> currentlyNormalArrows = normalArrows();

if (selectedArrow != null) {
selectedArrow.setSelected(false);
detailsListener.showDetails(null);
Expand Down Expand Up @@ -296,27 +305,42 @@ public void mouseClicked(MouseEvent event) {
}
}
if (event.getX() > sourceX + ITEM_WIDTH && event.getX() < cdmX) { // Arrows
for (Arrow component : arrows) {
if (component.contains(event.getPoint())) {
if (event.getClickCount() == 2) { // double click
zoomArrow = component;
if (slaveMappingPanel != null) {
slaveMappingPanel.setMapping(ObjectExchange.etl.getFieldToFieldMapping((Table) zoomArrow.getSource().getItem(), (Table) zoomArrow
.getTarget().getItem()));
new AnimateThread(true).start();
}

} else { // single click
if (!component.isSelected()) {
component.setSelected(true);
selectedArrow = component;
detailsListener.showDetails(mapping.getSourceToCdmMap(selectedArrow.getSource().getItem(), selectedArrow.getTarget().getItem()));
}
repaint();
Arrow clickedArrow = null;

for (Arrow arrow : currentlyHighlightedArrows) {
if (arrow.contains(event.getPoint())) {
clickedArrow = arrow;
break;
}
}

if (clickedArrow == null) {
for (Arrow arrow : currentlyNormalArrows) {
if (arrow.contains(event.getPoint())) {
clickedArrow = arrow;
break;
}
}
}

if (clickedArrow != null) {
if (event.getClickCount() == 2) { // double click
zoomArrow = clickedArrow;
if (slaveMappingPanel != null) {
slaveMappingPanel.setMapping(ObjectExchange.etl.getFieldToFieldMapping((Table) zoomArrow.getSource().getItem(), (Table) zoomArrow
.getTarget().getItem()));
new AnimateThread(true).start();
}

} else { // single click
if (!clickedArrow.isSelected()) {
clickedArrow.setSelected(true);
selectedArrow = clickedArrow;
detailsListener.showDetails(mapping.getSourceToCdmMap(selectedArrow.getSource().getItem(), selectedArrow.getTarget().getItem()));
}
repaint();
}
}
}

}
Expand Down Expand Up @@ -598,5 +622,26 @@ public void addResizeListener(ResizeListener resizeListener) {
public void setDetailsListener(DetailsListener detailsListener) {
this.detailsListener = detailsListener;
}

private List<Arrow> highlightedArrows() {
List<Arrow> highlighted = new ArrayList<Arrow>();
for(Arrow arrow : arrows) {
if (arrow.isHighlighted()) {
highlighted.add(arrow);
}
}
return highlighted;
}


private List<Arrow> normalArrows() {
List<Arrow> highlighted = new ArrayList<Arrow>();
for(Arrow arrow : arrows) {
if (!arrow.isHighlighted()) {
highlighted.add(arrow);
}
}
return highlighted;
}

}

0 comments on commit 9f629fd

Please sign in to comment.