Skip to content

Commit dc98c45

Browse files
MarMar
authored andcommitted
solved many bugs
1 parent 601c065 commit dc98c45

File tree

4 files changed

+30
-24
lines changed

4 files changed

+30
-24
lines changed

Colladia/app/src/main/java/com/ia04nf28/colladia/DrawActivity.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,7 @@ public void selectDrawerItem(MenuItem item)
105105

106106
default:
107107
Element newElement = ElementFactory.createElement(getApplicationContext(), item.getTitle().toString());
108-
109108
if (newElement != null) colladiaView.insertNewElement(newElement);
110-
111109
drawer.closeDrawers();
112110
break;
113111
}

Colladia/app/src/main/java/com/ia04nf28/colladia/DrawColladiaView.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,8 @@ private void startTouch(float x, float y)
369369
// Deselect previous selected element
370370
if(prevSelected != null)
371371
{
372-
Manager.instance(applicationCtx).deselectElement(prevSelected);
372+
if(Manager.instance(applicationCtx).getCurrentDiagram().getListElement().containsKey(prevSelected.getId()))
373+
Manager.instance(applicationCtx).deselectElement(prevSelected);
373374
prevSelected = null;
374375
}
375376

@@ -529,8 +530,8 @@ private void upTouch(float x, float y)
529530
case LINK:
530531
Anchor elemAnchor = getTouchedAnchor(currAbsolutePoint);
531532

532-
// Valid anchor found
533-
if(elemAnchor != null && startAnchor != elemAnchor)
533+
// Valid anchor found and cannot connect anchor on same element
534+
if(elemAnchor != null && startAnchor != elemAnchor && (!startAnchor.getIdParent().equals(elemAnchor.getIdParent()) || startAnchor.getIdParent().equals(Anchor.NO_PARENT)))
534535
{
535536
// Remove previous link
536537
if(linkedTo != null) //linkedTo.linkTo(null);

Colladia/app/src/main/java/com/ia04nf28/colladia/model/Elements/Anchor.java

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -141,20 +141,25 @@ public Anchor(String serializedAnchor, final ObservableMap<String, Element> list
141141
}
142142

143143
if(!this.getIdParentLink().equals(NO_PARENT) && this.getPositionLink() != NONE && listElement.containsKey(this.getIdParentLink())){//it is an anchor fixed to an element that is referenced
144-
145144
// Anchor was already connected
146145
if(this.getLink() != null && !this.getIdParentLink().equals(this.getLink().getIdParent())){
147146
// Remove link to current anchor from the other one
148-
this.getLink().setIdParentLink(NO_PARENT);
149-
this.getLink().setPositionLink(NONE);
150-
this.getLink().setLink(null);
147+
this.getLink().disconnect();
148+
}
149+
150+
//if the anchor to connect to was already connected then ask its old anchor partner to disconnect
151+
Anchor linkToThisAnchor = listElement.get(this.getIdParentLink()).getAnchor(this.getPositionLink());
152+
if(linkToThisAnchor.getLink()!=null && !linkToThisAnchor.getIdParentLink().equals(NO_PARENT) && linkToThisAnchor.getPositionLink() != NONE) {
153+
linkToThisAnchor.getLink().disconnect();
151154
}
152155

153156
// Connect to new anchor
154-
this.setLink(listElement.get(this.getIdParentLink()).getAnchor(this.getPositionLink()));
157+
this.setLink(linkToThisAnchor);
155158

156159
if(this.getLink().getLink() == null || this.getLink().getLink() != this.getLink()){//condition fulfilled if the anchor referenced has to get a reference of this one
157-
this.getLink().setLink(this.getLink());
160+
this.getLink().setIdParentLink(getIdParent());
161+
this.getLink().setPositionLink(getPosition());
162+
this.getLink().setLink(this);
158163
}
159164

160165

@@ -164,15 +169,9 @@ else if(this.getIdParentLink().equals(NO_PARENT) && this.getPositionLink() == NO
164169

165170
if(this.getLink() != null)
166171
{
167-
this.getLink().setPositionLink(NONE);
168-
this.getLink().setIdParentLink(NO_PARENT);
169-
this.getLink().setLink(null);
172+
this.getLink().disconnect();
170173
}
171-
172174
this.setLink(null);
173-
/* if(jsonAnchor.has(JSON_LINK) && !jsonAnchor.getString(JSON_LINK).equals("")){//it is a mobile anchor that is referenced
174-
this.setLink(new Anchor(jsonAnchor.getString(JSON_LINK), listElement));
175-
}*/
176175
}
177176

178177
} catch (JSONException e) {
@@ -340,13 +339,21 @@ public void setIdParent(String idParent) {
340339
}
341340

342341
public void reset() {
343-
if(link != null)
342+
if(this.getLink() != null)
344343
{
345-
link.setPositionLink(NONE);
346-
link.setIdParentLink(NO_PARENT);
347-
link.setLink(null);
344+
this.getLink().setPositionLink(NONE);
345+
this.getLink().setIdParentLink(NO_PARENT);
346+
this.getLink().setLink(null);
348347
}
349348

349+
this.setPositionLink(NONE);
350+
this.setIdParentLink(NO_PARENT);
351+
this.setLink(null);
352+
}
353+
354+
private void disconnect(){
355+
this.setPositionLink(NONE);
356+
this.setIdParentLink(NO_PARENT);
350357
this.setLink(null);
351358
}
352359
}

Colladia/app/src/main/java/com/ia04nf28/colladia/model/Manager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void run() {
6969
};
7070
}
7171
private final static long delayRequestDiagrams = 1000;
72-
private final static long delayRequestElements = 100;
72+
private final static long delayRequestElements = 1000;
7373

7474

7575
private final static String STATUS_FIELD = "status";
@@ -431,7 +431,7 @@ public void onResponse(String s) {
431431
}
432432
});
433433
}
434-
public void removeElement(final Element newElement) {
434+
public void removeElement(Element newElement) {
435435
// get diagrams list
436436
Requestator.instance(this.context).deleteElement(getCurrentDiagram().getName(), newElement.getId(), lastClock, new Response.Listener<String>() {
437437
@Override

0 commit comments

Comments
 (0)