//(c): Matti J. Katila package org.fenfire.modules.pp; import org.fenfire.*; import org.fenfire.impl.*; import org.fenfire.util.*; import org.fenfire.view.*; import org.fenfire.view.buoy.*; import org.nongnu.libvob.*; import org.nongnu.libvob.buoy.*; import org.nongnu.libvob.impl.DefaultVobMatcher; import org.nongnu.libvob.vobs.*; import org.nongnu.alph.impl.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.util.List; import java.rmi.*; import java.rmi.server.*; import com.hp.hpl.mesa.rdf.jena.model.*; import com.hp.hpl.mesa.rdf.jena.mem.*; public class Pp implements BuoyLinkListener { public static final String rcsid = "$Id: Pp.java,v 1.1 2003/03/31 12:37:47 mudyc Exp $"; public static final boolean dbg = true; protected static void p(String s) { if(dbg) pa(s); } protected static void pa(String s) { System.out.println("Pp::"+s); } static public void main(String[] args) throws RemoteException, RDFException { new Pp(); } private final GraphicsAPI api = GraphicsAPI.getInstance(); private Frame frame; private PPActions ppAct; private Space space; private BuoyAdaptor adaptor = new BuoyAdaptor(); private BuoyViewMainNode focus; private RDFNode accursed; public Pp() throws RemoteException, RDFException { space = new ModularSpace( new SimpleVStreamTexter( new FakeSpanMaker(), new Enfilade1DImpl.Enfilade1DImplMaker()), new ModelMem()); ppAct = new PPActionsImpl(space); String paper = ppAct.newPaper(); String note = ppAct.newNote(paper, 0,0, "A test note"); String paper2 = ppAct.newPaper(); String note2 = ppAct.newNote(paper2, 0,0, "A test note"); ppAct.assocNotes(note, 1, note2); accursed = space.getModel().getResource(note); api.startUpdateManager(new Runnable() { public void run() { Screen scr = new Screen(api.createWindow(), binder, shower); if(scr.window instanceof org.nongnu.libvob.impl.awt.FrameScreen) { frame = ((org.nongnu.libvob.impl.awt.FrameScreen)scr.window) .getFrame(); } else { frame = new Frame("FF"); frame.show(); } frame.setTitle("The Family Portal Module of Fenfire "); AbstractUpdateManager.addWindow(scr); scr.window.setLocation(0, 0, 1024, 768); adaptor.nodes = new NodeBuoyViewNodeType[]{ new PPCanvasNode(space, scr.window)}; adaptor.nodeLinkers = new BuoyNodeViewLinker[]{ new PPLinker(space)}; AbstractUpdateManager.chg(); } }); } private final Shower shower = new Shower() { Screen screen; public void setScreen(Screen s) {this.screen = s; } public VobScene generate() { VobScene old = this.screen.getVobSceneForEvents(); VobScene vs = this.screen.window.createVobScene(); render(vs); return vs; } public void chg() {} }; private final Binder binder = new Binder() { Screen screen; public void keystroke(String s) { pa("Keystroke: "+s); AbstractUpdateManager.chg(); } public void mouse(MouseEvent m) { pa("Mouse: " + m); VobScene vs = screen.getVobSceneForEvents(); int cs = vs.coords.getCSAt(0, m.getX(), m.getY(), null); pa("CS: "+cs); if (cs < 0) return; AbstractUpdateManager.chg(); } public void setScreen(Screen s) { this.screen = s; } public void timeout(Object id) {} public void windowClosed() { System.exit(0); } }; // -------------------------------------------------- // Let's get in action! private float ctrX=0, ctrY=0; private VobScene curVs = null; private void render(VobScene vs) { curVs = vs; vs.map.put(new SolidBackdropVob(Color.lightGray)); float width = (float)vs.size.getWidth() * 3.f/5; float height = (float)vs.size.getHeight() * 3.f/5; ctrX = ((float)vs.size.width)/2; ctrY = ((float)vs.size.height)/2; int focusCtr = vs.translateCS(0, "FocusCtr", ctrX,ctrY); float x = -width/2; int frameCS = vs.orthoBoxCS(focusCtr, "FocusFrame", 10, x, -height/2, 1, 1, width, height); vs.activate(frameCS); if (focus == null) { focus = adaptor.createMainNode(null, accursed, this); } if (focus == null) pa("Foo"); focus.renderMain(vs, frameCS); } // ------------------------------------------------------------ // BuoyLinkListener public void link(int dir, int anchorCS, BuoyViewNodeType otherNode, Object linkId, Object otherAnchor) { int anchorUnit = curVs.unitSqCS(anchorCS, "UN"); int anchorCenter = curVs.translateCS(anchorUnit, "TR55", 0.5f, 0.5f); float r = ctrY * 0.9f; int buoyCS; /* if (dir < 0){ buoyCS = curVs.coords.buoyOnCircle(0, anchorCenter, ctrX, ctrY, r, ctrX-r, ctrY, .1); } else { buoyCS = curVs.coords.buoyOnCircle(0, anchorCenter, ctrX, ctrY, r, ctrX+r, ctrY, .1); } */ pa("link!!!"); } // ------------------------------------------------------------ // }