use of com.ramussoft.pb.Sector in project ramus by Vitaliy-Yakovchuk.
the class PaintSector method setCorrectRows.
public void setCorrectRows() {
final Stream s = sector.getStream();
if (s != null) {
final Row[] rows = s.getAdded();
if (rows != null) {
setRows(rows);
}
} else {
Sector[] sectors = getStart().getOppozite(sector);
boolean start = true;
if (sectors.length == 0) {
sectors = getEnd().getOppozite(sector);
start = false;
}
if (sectors.length > 0 && sectors[0].getStream() != null) {
sector.setStream(SectorRefactor.cloneStream(sectors[0].getStream(), movingArea.dataPlugin, sector), ReplaceStreamType.CHILDREN);
sector.loadRowAttributes(sectors[0], start);
}
}
}
use of com.ramussoft.pb.Sector 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.Sector in project ramus by Vitaliy-Yakovchuk.
the class SectorRefactor method fixNoNameBug.
private void fixNoNameBug(Crosspoint crosspoint, Sector sector) {
if (crosspoint != null) {
if (crosspoint.isDLevel()) {
Sector[] oppozite = crosspoint.getOppozite(sector);
if (oppozite.length == 1) {
Sector opp = oppozite[0];
Stream s = opp.getStream();
((NSector) sector).setThisStream(s);
}
}
}
}
use of com.ramussoft.pb.Sector 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.Sector 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