=Piccolo2D 1.3 Release Notes= ------------------ Major changes: Piccolo2D.Java now builds with Apache Maven instead of Apache Ant. See Issues 6, 28, 29, 38, 44, 51, 52, 98, 104, 108, 109, 126, 128, 146. SWT support was refactored from extras into its own module and SWT examples were refactored from examples into their own module. See Issues 68, 125, 126, 143, 145. Many Checkstyle, PMD, and FindBugs errors and warnings have been fixed. Unit test line coverage has been increased to 48%. Fixed and verified issues: Issue Summary 2 Multiple project entries at ohloh.net 6 Migrate ant build to maven2 8 PSwing nodes prevent proper garbage collection 9 PComboBox does not work when nested in a Panel 10 PComboBox doesn't use Metal, Windows, and Motif look and feels 13 PSwing components cause extraneous redraws 14 PSwing components cause full page re-rendering on add/remove operations 15 Events from PSwing components are not consumed, and cause other interactions on the canvas 17 PCanvas looses keyboard events when a child PSwing node has focus 20 Double-buffering not disabled on child PSwing components added after creation 21 Cannot turn off interacting at the PRoot level 22 Name property for PNodes 23 remove child on PNode fails with NPE 25 Multiple PSwingCanvases can't be used together 27 Animation quality change redraws the entire screen 28 Add checkstyle configuration and reporting to maven build 29 Configure checkstyle maven plug-in to enforce our source code conventions 30 Extra mouse movement events fired on mouse exit 31 PActivity activityFinished gets called multiple times 32 PSwing mouse wheel support 38 Relocate svn root from piccolo to piccolo2d 41 Rephrase javadoc package comments 42 Transfer the documentation from http://www.cs.umd.edu/hcil/jazz/ here. 44 Rename piccolo subprojects and binaries to *2d 46 PFrameTest unit test fails on linux 47 Remove println to stdout/stderr in unit tests 48 Eliminate dependency on sun.* classes in PFixedWidthStroke 49 PFixedWidthStrokes are not fixed width on Mac OSX 51 Unit tests should reside in the same package as the classes under test 52 Compiler errors with jre 1.3 and 1.4 55 ohloh.net stats broken by repository layout changes 56 Infinite rendering loop caused by setOffset/Bounds/Scale in layoutChildren 59 Clarify copyright and license statements 63 JSlider fails to render knob icon under Intel Macs in Java 1.5 64 Add shadow nodes to extras 66 Full print doesn't work 67 ScrollingExample.java doesn't work 68 move SWT dependant classes to a new subproject (piccolo2d-swt) 69 Add integration with Processing (http://processing.org) 70 Patch: Proper Shape and Text Support in the SWT Part 71 PStyledTextEventHandler does not scale 72 PSelectionEventHandler grip points do not scale with zoom 73 Helloworld from piccolo2d.org relies on piccolox 74 Memory leak with PSwingRepaintManager 79 PSwingTest unit test failure on linux 80 PCanvas button handling code doesn't dispatch multi-button presses. 82 JComboBox visibility doesn't affect visiblity of PSwing node 83 PSwing are fuzzy when scale!=1, due to buffering of the PSwing 88 toImage doesn't return an image of the proper size 89 Low Test Coverage of PNode 90 Binary incompatible change from 1.2.1 in PInputEvent 93 PCanvas needs accessors for render qualities 94 PLayer should do nothing when removing a camera that isn't attached 95 @deprecated broke the mvn build 96 More consistent handling of NonInvertible transforms in PCamera 97 TestPSwing.java and TestPSwingFull.java Should be moved 98 Refactor edu.umd.cs.piccolo.pswingexamples and ...swtexamples to examples.pswing and examples.swt 99 PNode.toString refactoring 100 PInputEvent doesn't filter by modifier 101 Eliminate printStackTrace 104 Current maven multi-module build doesn't install the parent pom 106 toImage array is too simple in its fill behaviour 108 Set up hudson CI build 109 examples module should create a runnable jar 110 Syntactical code clean 111 Piccolo is missing HTML support 112 OSX: "Error: custom stroke not implemented" 113 Invisible nodes are reported to be picked by InputEventHandler 115 Discontinue .Net 116 New round of clirr errors, as of r624 123 PiccoloX uses Sun classes (sun.dc.path) that aren't in OpenJDK 124 Add additional constructors to PSWTImage 125 Compilation failure in swt module under linux 127 Unit tests fail on linux with OpenJDK version IcedTea6 1.4.1 128 Add osgi manifest to the builded jars 129 Use umlgraph 5.1 in the build process 131 PScrollPane does not use setInteracting() on the canvas 132 Refactor SWT examples from examples module to new swt-examples module 133 Javadoc in SWT package is completely unusable 137 Calling toImage() on a composite node often returns an empty image. 138 Unecessary memory usage when not double buffering PSWTCanvas 142 P3DRectTest test failure on Mac OSX PPC 143 SWTException: Failed to execute runnable (Invalid thread access) for PSWTCanvasTest on Mac OSX 144 Updates for PSwing 145 build broken (pom, swt) 150 Prepare SwingLayoutNode for distribution 158 Component doesn't receive events after PSwing is added, removed and re-added to scenegraph 159 events not delivered to PSwing Components for some transforms 160 endless calls to PSwing's ComponentListener 161 full bounds behavior has changed in Piccolo 1.3 API changes to core: edu.umd.cs.piccolo.PCamera: Method 'public void repaintFromLayer(edu.umd.cs.piccolo.util.PBounds, edu.umd.cs.piccolo.PNode)' has been deprecated edu.umd.cs.piccolo.PCamera: Method 'public void repaintFromLayer(edu.umd.cs.piccolo.util.PBounds, edu.umd.cs.piccolo.PLayer)' has been added edu.umd.cs.piccolo.PCanvas: Added public field INTERACTING_CHANGED_NOTIFICATION edu.umd.cs.piccolo.PCanvas: Added public field PROPERTY_INTERACTING edu.umd.cs.piccolo.PCanvas: Method 'public int getAnimatingRenderQuality()' has been added edu.umd.cs.piccolo.PCanvas: Method 'public int getDefaultRenderQuality()' has been added edu.umd.cs.piccolo.PCanvas: Method 'public edu.umd.cs.piccolo.event.PInputEventListener[] getInputEventListeners()' has been added edu.umd.cs.piccolo.PCanvas: Method 'public int getInteractingRenderQuality()' has been added edu.umd.cs.piccolo.PCanvas: Method 'public int getNormalRenderQuality()' has been added edu.umd.cs.piccolo.PCanvas: Method 'public void printAll(java.awt.Graphics)' has been added edu.umd.cs.piccolo.PNode: Added public field FILL_STRATEGY_ASPECT_COVER edu.umd.cs.piccolo.PNode: Added public field FILL_STRATEGY_ASPECT_FIT edu.umd.cs.piccolo.PNode: Added public field FILL_STRATEGY_EXACT_FIT edu.umd.cs.piccolo.PNode: Method 'public PNode(java.lang.String)' has been added edu.umd.cs.piccolo.PNode: Method 'public edu.umd.cs.piccolo.activities.PActivity animateToRelativePosition(java.awt.geom.Point2D, java.awt.geom.Point2D, java.awt.geom.Rectangle2D, int)' has been added edu.umd.cs.piccolo.PNode: Method 'public edu.umd.cs.piccolo.event.PInputEventListener[] getInputEventListeners()' has been added edu.umd.cs.piccolo.PNode: Method 'public java.lang.String getName()' has been added edu.umd.cs.piccolo.PNode: Method 'protected java.lang.String paramString()' has been deprecated edu.umd.cs.piccolo.PNode: Method 'public void position(java.awt.geom.Point2D, java.awt.geom.Point2D, java.awt.geom.Rectangle2D, int)' has been deprecated edu.umd.cs.piccolo.PNode: Method 'public void setName(java.lang.String)' has been added edu.umd.cs.piccolo.PNode: Method 'public java.awt.Image toImage(java.awt.image.BufferedImage, java.awt.Paint, int)' has been added edu.umd.cs.piccolo.PNode: Method 'public java.lang.String toString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.POffscreenCanvas: Class edu.umd.cs.piccolo.POffscreenCanvas added edu.umd.cs.piccolo.PRoot: Added public field PROPERTY_CODE_INTERACTING_CHANGED edu.umd.cs.piccolo.PRoot: Added public field PROPERTY_INTERACTING_CHANGED edu.umd.cs.piccolo.PRoot: Method 'public boolean getInteracting()' has been added edu.umd.cs.piccolo.PRoot: Method 'public void setInteracting(boolean)' has been added edu.umd.cs.piccolo.activities.PActivity: Method 'protected java.lang.String paramString()' has been deprecated edu.umd.cs.piccolo.activities.PActivity: Method 'public java.lang.String toString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.activities.PActivityScheduler: Added java.io.Serializable to the set of implemented interfaces edu.umd.cs.piccolo.activities.PColorActivity: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.activities.PInterpolatingActivity: Method 'public PInterpolatingActivity(long)' has been added edu.umd.cs.piccolo.activities.PInterpolatingActivity: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.activities.PTransformActivity: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.event.PBasicInputEventHandler: Method 'protected java.lang.String paramString()' has been deprecated edu.umd.cs.piccolo.event.PBasicInputEventHandler: Method 'public java.lang.String toString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.event.PDragEventHandler: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.event.PDragSequenceEventHandler: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.event.PPanEventHandler: Method 'public double getMaxAutoPanSpeed()' has been added edu.umd.cs.piccolo.event.PPanEventHandler: Method 'public double getMinAutoPanSpeed()' has been added edu.umd.cs.piccolo.event.PPanEventHandler: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.event.PZoomEventHandler: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.nodes.PHtmlView: Class edu.umd.cs.piccolo.nodes.PHtmlView added edu.umd.cs.piccolo.nodes.PImage: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.nodes.PPath: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.nodes.PText: Added public field DEFAULT_HORIZONTAL_ALIGNMENT edu.umd.cs.piccolo.nodes.PText: Added public field DEFAULT_TEXT edu.umd.cs.piccolo.nodes.PText: Added public field DEFAULT_TEXT_PAINT edu.umd.cs.piccolo.nodes.PText: Added public field PROPERTY_CODE_TEXT_PAINT edu.umd.cs.piccolo.nodes.PText: Added public field PROPERTY_TEXT_PAINT edu.umd.cs.piccolo.nodes.PText: Method 'public float getHorizontalAlignment()' has been added edu.umd.cs.piccolo.nodes.PText: Method 'public float getJustification()' has been deprecated edu.umd.cs.piccolo.nodes.PText: Method 'protected void paintGreek(edu.umd.cs.piccolo.util.PPaintContext)' has been added edu.umd.cs.piccolo.nodes.PText: Method 'protected void paintText(edu.umd.cs.piccolo.util.PPaintContext)' has been added edu.umd.cs.piccolo.nodes.PText: Method 'protected java.lang.String paramString()' has been removed, but an inherited definition exists. edu.umd.cs.piccolo.nodes.PText: Method 'public void setHorizontalAlignment(float)' has been added edu.umd.cs.piccolo.nodes.PText: Method 'public void setJustification(float)' has been deprecated edu.umd.cs.piccolo.util.PAffineTransform: Method 'public java.awt.geom.Point2D inverseTransform(java.awt.geom.Point2D, java.awt.geom.Point2D)' has been added edu.umd.cs.piccolo.util.PAffineTransformException: Class edu.umd.cs.piccolo.util.PAffineTransformException added edu.umd.cs.piccolo.util.PPaintContext: Method 'public void popCamera(edu.umd.cs.piccolo.PCamera)' has been deprecated edu.umd.cs.piccolo.util.PPaintContext: Method 'public void popCamera()' has been added Developers and contributors: Ben Bederson Stephen Chin <sjc at browsecode.org> Aaron Clamage Lance Good Michael L Heuer Allain Lalonde <allain at machete.ca> Chris Malley <cmalley at pixelzoom.com> jesse Alexander Kurtakov <akurtakov at gmail.com> Marcus Rohrmoser Sam Reid =Piccolo2D 1.2.1 Release Notes= ------------------ Note: The Piccolo2D project has changed hosting to Google Code at: http://code.google.com/p/piccolo2d/ piccolo/src PPickPath * Fixed incorrect comment on nextPickedNode method piccolo/extras * Added PSwing support for embedding Swing components (experimental) * Added package level javadoc comments Specific PSwing fixes: * PSwingEventHandler: Applied patch from Maarten Billemont that fixes the issue by not applying the camera's transform to input events when the node is not a descendant of a PLayer object. * PSwing: Sam Reid - API improvement (so that PSwing can be constructed without the destination PSwingCanvas as constructor arg). Old constructor is deprecated for compatibility with existing code. * PSwingCanvas: Sam Reid - minor change to facilitate adding/removal of pswing from canvas. PFrame * Fixed bug in PFrame where canvas size didn't follow containing PFrame size PNavigationEventHandler * Made PNavigationEventHandler.directCameraViewToFocus set the focus to the specified focus node PFixedWidthStroke * Added fix to PFixedWidthStroke to make dashes also fixed to go along with the width. LineShape * Fixed bug in intersects - accessed X instead of Y. Contributed by Sebastian Graca =Piccolo 1.2 Release Notes= ------------------ piccolo/src * changed eclipse project compiler settings to not display serization warnings. PNode * animate methods will now run immediatly if started with zero duration. * added check for set Scale when Scale is 0 * added animateTransformToBounds method * Replaced client properties with a mutable attribute set * Replaced addClientProperty with addAttribute * Replaced removeClientProperty with removeAttribute * added getClientProperites * added convenience methods for accessing primitive typed attributes * deprecated outdated client property methods * added propertyChangeParentMask to decide if property change events should be forwarded to parent * added property codes for each property event * changed property change event fire code to forward events up the node tree when needed * added scene graph delegate calls for node bounds invalidated, paint invalidated PCamera * added check for empty bounds case in animateViewToCenterBounds PPickPath * added CURRENT_PICK_PATH static variable PImage * fixed but when seizing with null image PPath * fixed case of setting bounds of vertical or horizontal lines. PInputEvent * added getModifiersEx accessor PActivity * Added new terminate method that allow you to specify the terminate behavior. PInterpolatingActivity * in activityFinished now set final target value before calling activity finished on delegate. piccolo/examples * added NodeLinkExample * added ChartLabelExample * added GraphEditorExample * added HierarchyZoomExample * added InterfaceFrame * added UserInteraction * added SpecialEffects * changed layout of example runner to use two columns piccolo/extras * added PCacheCamera * added PCacheCanvas * added PApplet * added PSWTZBoundsHandle * added PSWTHandle * added PSWTSelectionEventHandler * added PSWTStickyHandleManager * fixed picking of PFixedWidthStrokes * added getConsumer() method to PFixedWidthStroke's FillAdapter for jdk 1.5 compatibility. * many enhancements to PStyledText * added PApplet class PSelectionEventHandler * fixed coord system bug in updateMarquee * fixed bug in computeMarqueeSelection where collection was modified as it continued to be iterated PBoundsHandle * marked handleCursorHandler variable as transient PHandle * marked handleDragger variable as transient PFrame * added isFullScreenMode accessor PApplet * added initialize method that's called on event dispatch thread * added beforeInitilize method called on constructor thread =Piccolo 1.1 Release Notes= ------------------ Changed from Mozilla to BSD style license. piccolo/src PInterpolatingActivity * added terminate method * added new constructor with startime parameter method PBasicInputEventHandler * added keyboardFocusGained event method * added keyboardFocusLost event method PDragSequenceEventHandler * added getDragActivity method PInputEvent * added getKeyChar method * added getKeyLocation method * added isActionKey method * added isFocusEvent method * added isLeftMouseButton method * added isMiddleMouseButton method * added isMouseEnteredOrMouseExited method * added isRightMouseButton method PInputEventHandler * added acceptsFocusEvents method * added getAcceptsFocusEvents method * added setAcceptsFocusEvents method PPanEventHandler * changed unit of autopan speed to pixels per second PImage * removed accelerated property and related setters, getters, and constructors. (no longer needed in later versions of java) PPath * added createLine method * changed to internalUpdateBounds to manage path bounds * changed read and write to use methods in PUtil to read and write path data PText * added greek threshold property * added textPaint property * added justification property PCamera * added animateViewToPanToBounds method * added getViewConstraint method PCanvas * added notification when interaction quality changes * added setPanEventHandler method * added setZoomEventHandler method PInputManager * fixed bug in the order that mouse entered and mouse moved events were delivered. PNode * added getGlobalBounds method * added moveInFrontOf method * added moveInBackOf method * added occuded property * added animateToColor method * added centerFullBoundsOnPoint method * added findIntersectingNodes method * added getXOffset method * added getYOffset method * added internalUpdateBounds method * added isOpaque method * added setHeight method * added setWidth method * added setX method * added setY method * removed moveToBack(PNode child) method * removed moveToFront(PNode child) method * changed setBounds to send internalUpdateBounds message. * changed indexOfChild to check for case of null child * changed fullPick method to check of PPickPath accepts this node PBounds * added delataRequiredToCenter method PDebug * added debugPaintCalls mode PPaintContext * added getRenderQuality PPickPath * added acceptsNode method * added nextPickedNode method PUtil * added readPath method * added writePath method piccolo/examples * added BirdsEyeViewExample class * added CompositeExample class * added GridExample class * added GroupExample class * added NodeCacheExample class * added PiccoloPresentation class * added PositionPathActivityExample class piccolo/extras * added PPathActivity class * added PPositionPathActivity class * added PNotification class * added PNotificationCenter class * added PComposite class * added PLine class * added PNodeCache class * added experimental POcclusionDetection class * PStyledText added drawing of underlines and strikethroughs * PFrame added beforeInitialize method * PHandle added default color and shape attributes * PSelectionEventHandler numerous changes * PScrollPane and PViewPort numerous changes * PClip fixed bounds repaint bug =Piccolo 1.0 Release Notes= ------------------ piccolo/examples * added AngleNodeExample * added CenterExample * added PulseExample * added StickyHandleExample * added TooltipExample * added swtexamples piccolo/extras * catch security exception thrown by setDefaultCloseOperation in PFrame. * added decorateSelectedNode() methods to PSelectionEventHandler * improved the way that PBoundsHandle manages the cursor * changed PHandle and PBoundsHandle implementations so that it doesn't assume that it's manipulating its parent. * added better support for insets to PStyledText * changed PLocator class so that its locate methods don't take a node parameter. * added a PNodeLocator class * added preliminary support for SWT (see www.eclipse.org) piccolo rendering piccolo/src * added toString() debug methods throughout the framework * added static final keys for property change names throughout the framework. Keys are defined in the classes that fire the events. * added PComponent, and abstraction of PCanvas. This is so that piccolo can be used with SWT. * added PColorActivity * changed var names and method names in PActivity, hopefully will make the class clearer. * removed PActivities starte and ended runnables, replaced with PActivityDelegate * modified PActivityScheduler to allow for some control over the order that activities run in. * added different interpolation modes to PInterpolatingActivity * added the ability to loop to PInterpolatingActivity * added MouseWheelEvent support * added min/max scale constraints ot PZoomEventHandler * PNode setBounds with zero width or height will reset the bounds to empty * fixed PNode.rotate * added print method to PNode * ported Jazz's ZTransformGroup.postion() method to PNode * don't use media tracker to load images in PImage if the image is a BufferedImage * fixed PAffineTransform.getRotation() method * fixed PPaintContext so that it can be created with a Graphics2D that has a null clip =Piccolo 1.0-beta2 Release Notes= ------------------ * Removed Piccolo abstract rendered and OpenGL support code, instead we are planning to use a new library, Agile2D. Agile2D provides its own OpenGL implementation of the java.awt.Graphics2D class. piccolo/examples * added clip example * added internal lens example * added panToExample to illustrate Pcamera’s animateViewToIncludeBounds method * added scrolling example * added selection example * added text example to show how to use PStyledTextEventHandler to edit text directly on the piccolo canvas. piccolo/extras * added PSelectionEventHandler * added PStyledTextEventHandler * added PClip * added PLens * added PStyledText, used together with PStyledTextEvent handler to edit text on the piccolo canvas. * added a number of scroll supported classes in the extras swing package. piccolo/src PCamera * renamed centerView to animateViewToBounds * added animateViewToIncludeBounds PNode * renamed translateRelativeToParent() to offset() * transform var is only created when needed, otherwise it's now left as null * added getClientPropertyKeysIterator() * added rotateInPlace() * renamed getTranslation() to getOffset() * renamed setTranslation() to setOffset() * renamed translateRelativeToParent() to offset() * renamed deltete() to removeFromParent() PInputManager * added tracking for individual mouse button pressed. This way if you press down on a node with button1 that node will stay as mouse focus as long as button1 is pressed, event if button2 is repeatedly pressed and released. PCanvas * added animating render quality, this quality is used if any of the scheduled activities return true when sent the message isAnimation(). * added checks to make sure that every mouse press gets matched with a mouse released, something to does not always happen in swing. PCamera * added some view constraint options. These are used to constrain the cameras view to the bounds of the layers that the camera is viewing. * renamed centerView() to animateViewToBounds() * added animateViewToIncludeBounds() PInputEvent * removed consume() replaced with setHandled(). Previously consuming an event would completely stop it from getting dispatched to anyone else. Set handled is a weaker command, the event continues to get dispatched to other event handlers but they are expected to ignore it unless they are trying to do something special. PImage * changed the default so that images are NOT accelerated. PPath * removed getStrokeWidth(), Strokes are now just dealt with as shapes that are created by stroke.createStrokedShape(path). PText * added setConstrainWidthToTextWidth() * added setConstrainHeightToTextHeight() PAffineTransform * renamed setTranslation to setOffset() PBounds *added deltaRequiredToContain() PDebug * added options to debugMemoryUse and set the frame rate at which debug results are calculated. PPaintContext * removed drawing methods, and abstract renderer in general. Instead all drawing should be done directly with the Graphics2D object. PUtil * added DEFAULT_ACTIVITY_STEP_RATE = 20; * added ACTIVITY_SCHEDULER_FRAME_DELAY = 10;