public void setNextScene(Iscene nextScene, PImage arrow) { nextSceneInner = nextScene; // Button to get to the next scene MTImageButton nextSceneButton = new MTImageButton(arrow, mtApp); nextSceneButton.setNoStroke(true); if (MT4jSettings.getInstance().isOpenGlMode()) nextSceneButton.setUseDirectGL(true); nextSceneButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { switch (ae.getID()) { case TapEvent.BUTTON_CLICKED: case TapEvent.BUTTON_UP: // Save the current scene on the scene stack before changing mtApp.pushScene(); mtApp.changeScene(nextSceneInner); break; default: break; } } }); getCanvas().addChild(nextSceneButton); nextSceneButton.setPositionGlobal( new Vector3D( mtApp.width - nextSceneButton.getWidthXY(TransformSpace.GLOBAL) - 5, mtApp.height - nextSceneButton.getHeightXY(TransformSpace.GLOBAL) - 5, 0)); }
public SlideScene2( MTApplication mtApplication, String name, PImage pImage, boolean hasPrev, PImage arrow) { super(mtApplication, name); this.mtApp = mtApplication; // Set the background color this.setClearColor(new MTColor(0, 0, 0, 0)); this.registerGlobalInputProcessor(new CursorTracer(mtApp, this)); MTRectangle rect = new MTRectangle(pImage, mtApplication); this.getCanvas().addChild(rect); rect.setPositionGlobal(new Vector3D(mtApplication.width / 2f, mtApplication.height / 2f)); if (hasPrev) { MTImageButton previousSceneButton = new MTImageButton(arrow, mtApplication); previousSceneButton.setNoStroke(true); if (MT4jSettings.getInstance().isOpenGlMode()) previousSceneButton.setUseDirectGL(true); previousSceneButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { switch (ae.getID()) { case TapEvent.BUTTON_CLICKED: case TapEvent.BUTTON_UP: mtApp.popScene(); break; default: break; } } }); getCanvas().addChild(previousSceneButton); previousSceneButton.scale( -1, 1, 1, previousSceneButton.getCenterPointLocal(), TransformSpace.LOCAL); previousSceneButton.setPositionGlobal( new Vector3D( previousSceneButton.getWidthXY(TransformSpace.GLOBAL) + 5, mtApp.height - previousSceneButton.getHeightXY(TransformSpace.GLOBAL) - 5, 0)); } // Set a scene transition - Flip transition only available using opengl supporting the FBO // extenstion if (MT4jSettings.getInstance().isOpenGlMode() && GLFBO.isSupported(mtApp)) this.setTransition(new FlipTransition(mtApp, 700)); else { this.setTransition(new FadeTransition(mtApp)); } }
public FlickrScene(MTApplication mtAppl, String name) { super(mtAppl, name); this.app = mtAppl; piler = new PileManager(this.app, this.getCanvas()); // Set a zoom limit final MTCamera camManager = new MTCamera(mtAppl); this.setSceneCam(camManager); this.getSceneCam().setZoomMinDistance(80); // this.setClearColor(new MTColor(135, 206, 250, 255)); this.setClearColor(new MTColor(70, 70, 72, 255)); // Show touches this.registerGlobalInputProcessor(new CursorTracer(mtAppl, this)); // Add multitouch gestures to the canvas background lassoProcessor = new LassoProcessor(app, this.getCanvas(), this.getSceneCam()); this.getCanvas().registerInputProcessor(lassoProcessor); this.getCanvas() .addGestureListener( LassoProcessor.class, new DefaultLassoAction(app, this.getCanvas().getPileManager(), this.getCanvas())); this.getCanvas().registerInputProcessor(new PanProcessorTwoFingers(app)); this.getCanvas().addGestureListener(PanProcessorTwoFingers.class, new DefaultPanAction()); this.getCanvas().registerInputProcessor(new ZoomProcessor(app)); this.getCanvas().addGestureListener(ZoomProcessor.class, new DefaultZoomAction()); makePileProcessor = new MakePileProcessor(app, this.getCanvas()); this.getCanvas().registerInputProcessor(makePileProcessor); this.getCanvas() .addGestureListener( MakePileProcessor.class, new DefaultMakePileAction(app, this.getCanvas().getPileManager(), this.getCanvas())); this.getCanvas().registerInputProcessor(new TapAndHoldProcessor(app, 2000)); this.getCanvas() .addGestureListener(TapAndHoldProcessor.class, new TapAndHoldVisualizer(app, getCanvas())); this.getCanvas() .addGestureListener( TapAndHoldProcessor.class, new IGestureEventListener() { public boolean processGestureEvent(MTGestureEvent ge) { TapAndHoldEvent th = (TapAndHoldEvent) ge; switch (th.getId()) { case TapAndHoldEvent.GESTURE_DETECTED: break; case TapAndHoldEvent.GESTURE_UPDATED: break; case TapAndHoldEvent.GESTURE_ENDED: break; default: break; } return false; } }); piler = new PileManager(app, getCanvas()); pictureLayer = new MTComponent(app); MTComponent topLayer = new MTComponent(app, "top layer group", new MTCamera(app)); PImage keyboardImg = app.loadImage( System.getProperty("user.dir") + File.separator + "examples" + File.separator + "advanced" + File.separator + File.separator + "flickrMT" + File.separator + File.separator + "data" + File.separator // + "keyb2.png"); + "keyb128.png"); final MTImageButton keyboardButton = new MTImageButton(keyboardImg, app); keyboardButton.setFillColor(new MTColor(255, 255, 255, 200)); keyboardButton.setName("KeyboardButton"); keyboardButton.setNoStroke(true); // keyboardButton.translateGlobal(new Vector3D(5,5,0)); keyboardButton.translateGlobal( new Vector3D(-2, app.height - keyboardButton.getWidthXY(TransformSpace.GLOBAL) + 2, 0)); topLayer.addChild(keyboardButton); progressBar = new MTProgressBar( app, app.loadFont(MT4jSettings.getInstance().getDefaultFontPath() + "Ziggurat.vlw")); progressBar.setDepthBufferDisabled(true); progressBar.setVisible(false); topLayer.addChild(progressBar); keyboardButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { switch (ae.getID()) { case TapEvent.BUTTON_CLICKED: // Flickr Keyboard MTKeyboard keyb = new MTKeyboard(app); keyb.setFillColor(new MTColor(30, 30, 30, 210)); keyb.setStrokeColor(new MTColor(0, 0, 0, 255)); final MTTextArea t = new MTTextArea( app, FontManager.getInstance() .createFont( app, "arial.ttf", 50, new MTColor(0, 0, 0, 255), // Fill color new MTColor(0, 0, 0, 255))); // Stroke color t.setStrokeColor(new MTColor(0, 0, 0, 255)); t.setFillColor(new MTColor(205, 200, 177, 255)); t.unregisterAllInputProcessors(); t.setEnableCaret(true); t.snapToKeyboard(keyb); keyb.addTextInputListener(t); // Flickr Button for the keyboard MTSvgButton flickrButton = new MTSvgButton( System.getProperty("user.dir") + File.separator + "examples" + File.separator + "advanced" + File.separator + File.separator + "flickrMT" + File.separator + "data" + File.separator + "Flickr_Logo.svg", app); flickrButton.scale(0.4f, 0.4f, 1, new Vector3D(0, 0, 0), TransformSpace.LOCAL); flickrButton.translate(new Vector3D(0, 15, 0)); flickrButton.setBoundsPickingBehaviour(AbstractShape.BOUNDS_ONLY_CHECK); // Add actionlistener to flickr button flickrButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (arg0.getSource() instanceof MTComponent) { // MTBaseComponent clickedComp = (MTBaseComponent)arg0.getSource(); switch (arg0.getID()) { case TapEvent.BUTTON_CLICKED: // Get current search parameters SearchParameters sp = new SearchParameters(); // sp.setSafeSearch("213on"); /* DateFormat dateFormat = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss"); java.util.Date date = new java.util.Date (); String dateStr = dateFormat.format (date); System.out.println("Date: " + dateStr); try{ Date date2 = dateFormat.parse (dateStr); sp.setInterestingnessDate(date2); }catch(ParseException pe){ pe.printStackTrace(); } */ // sp.setMachineTags(new String[]{"geo:locality=\"san francisco\""}); sp.setText(t.getText()); // sp.setTags(new String[]{t.getText()}); sp.setSort(SearchParameters.RELEVANCE); System.out.println("Flickr search for: \"" + t.getText() + "\""); // Load flickr api key from file String flickrApiKey = ""; String flickrSecret = ""; Properties properties = new Properties(); try { properties.load( new FileInputStream( System.getProperty("user.dir") + File.separator + "examples" + File.separator + "advanced" + File.separator + File.separator + "flickrMT" + File.separator + "data" + File.separator + "FlickrApiKey.txt")); flickrApiKey = properties.getProperty("FlickrApiKey", " "); flickrSecret = properties.getProperty("FlickrSecret", " "); } catch (Exception e) { System.err.println( "Error while loading Settings.txt file. Using defaults."); } // Create flickr loader thread final FlickrMTFotoLoader flickrLoader = new FlickrMTFotoLoader(app, flickrApiKey, flickrSecret, sp, 300); flickrLoader.setFotoLoadCount(15); // Define action when loader thread finished flickrLoader.addProgressFinishedListener( new IMTEventListener() { public void processMTEvent(MTEvent mtEvent) { // Add the loaded fotos in the main drawing thread to // avoid threading problems registerPreDrawAction( new IPreDrawAction() { public void processAction() { MTImage[] fotos = flickrLoader.getMtFotos(); for (int i = 0; i < fotos.length; i++) { MTImage card = fotos[i]; card.setUseDirectGL(true); card.setDisplayCloseButton(true); card.setPositionGlobal( new Vector3D( Tools3D.getRandom( 10, MT4jSettings.getInstance() .getScreenWidth() - 100), Tools3D.getRandom( 10, MT4jSettings.getInstance() .getScreenHeight() - 50), 0)); card.toSize(200, 200); card.addGestureListener( DragProcessor.class, new InertiaDragAction()); lassoProcessor.addClusterable( card); // make fotos lasso-able makePileProcessor.addClusterable( card); // make elements pileable by this // processor piler.addPileable( card); // makes the photos pile-able pictureLayer.addChild(card); } progressBar.setVisible(false); } public boolean isLoop() { return false; } }); } }); progressBar.setProgressInfoProvider(flickrLoader); progressBar.setVisible(true); // Run the thread flickrLoader.start(); // Clear textarea t.clear(); break; default: break; } } } }); keyb.addChild(flickrButton); // getCanvas().addChild(0, keyb); getCanvas().addChild(keyb); keyb.setPositionGlobal(new Vector3D(app.width / 2f, app.height / 2f, 0)); break; default: break; } } }); this.getCanvas().addChild(pictureLayer); this.getCanvas().addChild(topLayer); }