package jp.ac.kyutech.mns.ist; import java.awt.Point; import java.awt.geom.Rectangle2D; import java.util.ArrayList; import jp.ac.kyutech.mns.ist.sheetmap.SeatmapController; import edu.umd.cs.piccolo.PCamera; import edu.umd.cs.piccolo.activities.PActivity; import edu.umd.cs.piccolo.util.PBounds; public class LayoutBySeat extends LayoutAbstract{ SeatmapController sc; public LayoutBySeat(PCamera cam, SeatmapController sc){ super(cam); setSeatmapController(sc); } public void setSeatmapController(SeatmapController sc){ this.sc = sc; } public ArrayList<PActivity> move(ArrayList<LayoutContent> cnt){ Rectangle2D maximumDim = maxContent(cnt); if (maximumDim == null) return null; int msec = 1000; double x,y,w,h, xgap = 0, ygap = 0; w = maximumDim.getWidth(); h = maximumDim.getHeight(); //tempAfterLayoutBounds ArrayList<PActivity> palist = new ArrayList<PActivity>(); PBounds returnPB = null; int outagepos = 0;//場所が入力されていない筆記の配置場所 matrix.removeAll(); for(LayoutContent pn: cnt){ // if (!pn.hasContent()) continue; Point pos = sc.getPointByLayoutContent(pn); PActivity pa; PBounds aPB = new PBounds(pn.getFullBounds()); if (pos == null) { x = outagepos*(w+xgap); y = -1.2*(h+ygap); matrix.put(outagepos,-1,pn); } else { x = pos.x*(w+xgap); y = pos.y*(h+ygap); matrix.put(pos.x,pos.y,pn); } pa = pn.animateToPositionScaleRotation(x, y, 1, 0, msec); aPB.setOrigin(x,y); palist.add(pa); if (returnPB == null) returnPB = aPB; else returnPB.add(aPB); } return palist; } public PBounds contentregion(LayoutTarget target){ ArrayList<LayoutContent> cnt = target.getLayoutContents(); Rectangle2D maximumDim = maxContent(cnt); // int msec = 1000; if (maximumDim == null) return null; double x,y,w,h, xgap = 0, ygap = 0; w = maximumDim.getWidth(); h = maximumDim.getHeight(); //tempAfterLayoutBounds // ArrayList<PActivity> palist = new ArrayList<PActivity>(); PBounds returnPB = null; int outagepos = 0;//場所が入力されていない筆記の配置場所 for(LayoutContent pn: cnt){ // if (!pn.hasContent()) continue; Point pos = sc.getPointByLayoutContent(pn); // PActivity pa; PBounds aPB = new PBounds(pn.getFullBounds()); if (pos == null) { x = outagepos*(w+xgap); y = -1.2*(h+ygap); } else { x = pos.x*(w+xgap); y = pos.y*(h+ygap); } // pa = pn.animateToPositionScaleRotation(x, y, 1, 0, msec); aPB.setOrigin(x,y); // palist.add(pa); if (returnPB == null) returnPB = aPB; else returnPB.add(aPB); } return returnPB; } }