use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.
the class PaintSector method removeX.
private void removeX() {
if (rec)
return;
rec = true;
for (final Point element : points) element.remove();
movingArea.getRefactor().removeSector(this);
Crosspoint start = getStart();
Crosspoint end = getEnd();
sector.remove();
synchronized (movingArea.getDataPlugin()) {
((NSector) sector).clearMe();
}
removeAther(start);
removeAther(end);
}
use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.
the class PaintSector method removeAther.
/**
* Перевіряє і видаляє під’єднані до сектора сектори.
*/
private void removeAther(final Crosspoint point) {
// System.out.println("Remove other "+point);
if (point != null) {
Row[] del;
if (getStream() == null)
del = new Row[] {};
else
del = getStream().getAdded();
if (!point.isDLevel()) {
final boolean start = !point.isIn(sector);
((AbstractSector) sector).removeFromParent(del, start);
}
if (point.isRemoveable()) {
PaintSector s = null;
for (int i = 0; i < movingArea.getRefactor().getSectorsCount(); i++) {
s = movingArea.getRefactor().getSector(i);
if (point.isIn(s.getSector()))
break;
}
if (s == null)
return;
try {
s.joinSector(movingArea.getRefactor().getOppozite(s, point)[0]);
} catch (Exception exception) {
exception.printStackTrace();
}
s.createTexts();
}
}
}
use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.
the class SectorRefactor method changeSector.
/**
* Змінює сектор переданий методом setSector(Sector sector).
*
* @return <code>true</code>, якщо зміна відбулась,<br>
* <code>false</code>, якщо зміна не відбулась.
*/
public boolean changeSector() {
Crosspoint crosspoint;
final PerspectivePoint point = getLastPoint();
if (point.functionType == -1 && point.borderType == -1) {
if (point.pin.getSector().getStart() == null || point.pin.getSector().getEnd() == null || point.pin.getSector().equals(sector))
return false;
}
Sector inner = sector.getSector();
for (PaintSector s : sectors) if (s.getSector().equals(inner)) {
this.sector = s;
break;
}
lastC = null;
NSectorBorder sb;
if (point.type == TYPE_START) {
sb = sector.getSector().getStart();
crosspoint = sector.getStart();
pointB = new PerspectivePoint();
pointB.x = sector.getEndPoint().getX();
pointB.y = sector.getEndPoint().getY();
} else {
sb = sector.getSector().getEnd();
crosspoint = sector.getEnd();
pointA = new PerspectivePoint();
pointA.x = sector.getStartPoint().getX();
pointA.y = sector.getStartPoint().getY();
}
List<Sector> oldConnectedSectors = new ArrayList<Sector>();
if (crosspoint != null) {
for (Sector s : crosspoint.getIns()) if (s != sector.getSector())
oldConnectedSectors.add(s);
for (Sector s : crosspoint.getOuts()) if (s != sector.getSector())
oldConnectedSectors.add(s);
}
Sector s = null;
boolean createMiss = true;
if (point.function != null) {
Function oldF = sb.getFunction();
if (oldF != null && oldF.equals(point.function)) {
if (function.getDecompositionType() >= 0 || point.function.getType() >= Function.TYPE_EXTERNAL_REFERENCE)
createMiss = false;
else {
createMiss = point.functionType != sb.getFunctionType();
}
}
}
if (createMiss)
s = createMiss(point);
else
point.crosspoint = sb.getCrosspoint();
if (s != null)
s.setVisualAttributes(sector.getSector().getVisualAttributes());
if (type == TYPE_START) {
copyToSectorBorder(sb, pointA);
sector.setStart(point.crosspoint, point.point, createMiss);
sector.getSector().getStart().commit();
} else {
copyToSectorBorder(sector.getSector().getEnd(), pointB);
sector.setEnd(point.crosspoint, point.point, createMiss);
sector.getSector().getEnd().commit();
}
if (sector.getStream() != null) {
if (lastC != null)
lastC.setStream(cloneStream(sector.getStream(), movingArea.dataPlugin, lastC), ReplaceStreamType.CHILDREN);
}
sector.setCorrectRows();
sector.regeneratePoints();
sector.tryRemovePin(movingArea);
Hashtable<Long, Sector> sectorHash = movingArea.getDataPlugin().getSectorHash();
for (Sector sector : oldConnectedSectors) {
if (sectorHash.get(((NSector) sector).getElementId()) != null) {
fixOwners(sector, getDataPlugin());
}
}
saveToFunction();
return true;
}
use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.
the class SectorRefactor method fillStartFromOwners.
private static void fillStartFromOwners(Sector sector, HashSet<Row> owners, DataPlugin dataPlugin, boolean[] hasFunctionOwners) {
Crosspoint crosspoint = sector.getStart().getCrosspoint();
Function function2 = sector.getStart().getFunction();
if (function2 != null) {
if (function2.getType() != Function.TYPE_DFDS_ROLE) {
Row row = function2.getOwner();
if (row != null && !owners.contains(row)) {
owners.add(row);
hasFunctionOwners[0] = true;
}
} else {
Stream stream = (Stream) dataPlugin.findRowByGlobalId(function2.getLink());
if (stream != null)
for (Row row : stream.getAdded()) {
if (row != null && !owners.contains(row))
owners.add(row);
}
}
}
if (crosspoint != null)
for (Sector sector2 : crosspoint.getOppozite(sector)) fillStartFromOwners(sector2, owners, dataPlugin, hasFunctionOwners);
}
use of com.ramussoft.pb.Crosspoint in project ramus by Vitaliy-Yakovchuk.
the class SectorRefactor method createSectorOnIn.
public Sector createSectorOnIn(final Crosspoint point, final SectorBorder border, final PaintSector sector, boolean start) {
Function function = border.getFunction();
int borderType = border.getBorderType();
if (function != null && function.getType() == Function.TYPE_DFDS_ROLE) {
function = null;
borderType = MovingText.getOpposite(border.getFunctionType());
}
double pos;
Sector s;
Point bPoint;
Function par = sector.getFunction();
if (start)
bPoint = sector.getStartPoint();
else
bPoint = sector.getEndPoint();
if (function != null) {
if ((border.getFunctionType() == MovingPanel.RIGHT) || (border.getFunctionType() == MovingPanel.LEFT))
pos = bPoint.getY() / movingArea.CLIENT_HEIGHT * par.getBounds().getHeight() + par.getBounds().getY();
else
pos = bPoint.getX() / movingArea.CLIENT_WIDTH * par.getBounds().getWidth() + par.getBounds().getX();
s = createPartIn(point, function, border.getFunctionType(), pos, !start);
} else {
if ((borderType == MovingPanel.RIGHT) || (borderType == MovingPanel.LEFT))
pos = bPoint.getY() / movingArea.CLIENT_HEIGHT * par.getBounds().getHeight() + par.getBounds().getY();
else
pos = sector.getStartPoint().getX() / movingArea.CLIENT_WIDTH * par.getBounds().getWidth() + par.getBounds().getX();
s = createPartOut(point, this.function, borderType, pos, !start);
}
if (s != null) {
s.setStream(cloneStream(sector.getSector().getStream(), movingArea.dataPlugin, s), ReplaceStreamType.CHILDREN);
((NSector) s).storeData();
s.setVisualAttributes(s.getVisualAttributes());
}
return s;
}
Aggregations