--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKitTools/DrawTest/DrawTestToolbarController.m Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,354 @@
+/*
+ * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "DrawTestToolbarController.h"
+
+enum
+{
+ ToolbarBrowseToolTag = 0,
+ ToolbarPanToolTag,
+ ToolbarZoomToolTag,
+
+ ToolbarPointerToolTag,
+ ToolbarLineToolTag,
+ ToolbarRectangleToolTag,
+ ToolbarElipseToolTag,
+ ToolbarTriangleToolTag,
+ ToolbarPolyLineToolTag,
+ ToolbarArcToolTag,
+
+ ToolbarDeleteSelectionTag,
+
+ ToolbarMoveForwardTag,
+ ToolbarMoveBackwardTag,
+ ToolbarMoveToFrontTag,
+ ToolbarMoveToBackTag,
+ ToolbarMiscItem
+};
+
+// Constants
+NSString *ToolbarIdentifier = @"Main Document Toolbar";
+
+NSString *ToolbarBrowseToolIdentifier = @"Browse";
+NSString *ToolbarPanToolIdentifier = @"Pan";
+NSString *ToolbarZoomToolIdentifier = @"Zoom";
+
+NSString *ToolbarPointerToolIdentifier = @"Pointer";
+NSString *ToolbarRectangleToolIdentifier = @"Rectangle";
+NSString *ToolbarElipseToolIdentifier = @"Oval";
+NSString *ToolbarTriangleToolIdentifier = @"Triangle";
+NSString *ToolbarPolyLineToolIdentifier = @"PolyLine";
+NSString *ToolbarArcToolIdentifier = @"Arc";
+
+NSString *ToolbarDeleteShapeIdentifier = @"Delete";
+NSString *ToolbarMoveForwardIdentifier = @"Forward";
+NSString *ToolbarMoveBackwardIdentifier = @"Backward";
+NSString *ToolbarMoveToFrontIdentifier = @"Front";
+NSString *ToolbarMoveToBackIdentifier = @"Back";
+
+NSString *ToolbarPointerToolImage = @"Toolbar_Pointer";
+NSString *ToolbarRectangleToolImage = @"Toolbar_Rectangle";
+NSString *ToolbarElipseToolImage = @"Toolbar_Oval";
+NSString *ToolbarTriangleToolImage = @"Toolbar_Triangle";
+
+NSString *ToolbarDeleteShapeImage = @"Toolbar_Delete";
+NSString *ToolbarMoveForwardImage = @"Toolbar_Forward";
+NSString *ToolbarMoveBackwardImage = @"Toolbar_Backward";
+NSString *ToolbarMoveToFrontImage = @"Toolbar_Front";
+NSString *ToolbarMoveToBackImage = @"Toolbar_Back";
+
+@interface DrawTestToolbarController (InternalMethods)
+- (void)setupToolbar;
+- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag;
+- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image;
+- (void)addToolbarItem:(NSString *)identifier
+ withLabel:(NSString *)label
+ withPaletteLabel:(NSString *)paletteLabel
+ withImage:(NSString *)imageName
+ withToolTip:(NSString *)toolTip
+ withTag:(int)tag;
+@end
+
+
+@implementation DrawTestToolbarController
+
+- (id)initWithDrawView:(WebView *)drawView
+{
+ if (self = [super init]){
+ _drawView = [drawView retain];
+ [self setupToolbar]; // could be done lazily.
+ }
+ return self;
+}
+
+- (void)dealloc
+{
+ [_toolbarItems release];
+ [super dealloc];
+}
+
+
+- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag
+{
+
+ [self addToolbarItem:identifier
+ withLabel:identifier
+ withPaletteLabel:identifier
+ withImage:image
+ withToolTip:identifier
+ withTag:tag];
+}
+
+- (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image
+{
+ [self addToolbarItemWithIdentifier:identifier withImage:image withTag:ToolbarMiscItem];
+}
+
+- (void)addToolbarItem:(NSString *)identifier
+ withLabel:(NSString *)label
+ withPaletteLabel:(NSString *)paletteLabel
+ withImage:(NSString *)imageName
+ withToolTip:(NSString *)toolTip
+ withTag:(int)tag
+{
+ NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:identifier] autorelease];
+
+ [item setLabel:label];
+ [item setPaletteLabel:paletteLabel];
+ [item setToolTip:toolTip];
+ [item setImage:[NSImage imageNamed:imageName]];
+ [item setTarget:self];
+ [item setAction:@selector(clickedToolbarItem:)];
+ [item setTag:tag];
+
+ [_toolbarItems setObject:item forKey:identifier];
+}
+
+- (void)setupToolbar
+{
+ _toolbarItems = [[NSMutableDictionary alloc] init];
+
+ [self addToolbarItemWithIdentifier:ToolbarBrowseToolIdentifier
+ withImage:ToolbarPointerToolImage
+ withTag:ToolbarBrowseToolTag];
+ [[_toolbarItems objectForKey:ToolbarBrowseToolIdentifier] setImage:[[NSCursor pointingHandCursor] image]];
+
+ [self addToolbarItemWithIdentifier:ToolbarPanToolIdentifier
+ withImage:ToolbarPointerToolImage
+ withTag:ToolbarPanToolTag];
+ [[_toolbarItems objectForKey:ToolbarPanToolIdentifier] setImage:[[NSCursor openHandCursor] image]];
+
+ [self addToolbarItemWithIdentifier:ToolbarZoomToolIdentifier
+ withImage:ToolbarPointerToolImage
+ withTag:ToolbarZoomToolTag];
+
+
+ [self addToolbarItemWithIdentifier:ToolbarPointerToolIdentifier
+ withImage:ToolbarPointerToolImage
+ withTag:ToolbarPointerToolTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarRectangleToolIdentifier
+ withImage:ToolbarRectangleToolImage
+ withTag:ToolbarRectangleToolTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarElipseToolIdentifier
+ withImage:ToolbarElipseToolImage
+ withTag:ToolbarElipseToolTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarTriangleToolIdentifier
+ withImage:ToolbarTriangleToolImage
+ withTag:ToolbarTriangleToolTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarDeleteShapeIdentifier
+ withImage:ToolbarDeleteShapeImage
+ withTag:ToolbarDeleteSelectionTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarMoveForwardIdentifier
+ withImage:ToolbarMoveForwardImage
+ withTag:ToolbarMoveForwardTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarMoveBackwardIdentifier
+ withImage:ToolbarMoveBackwardImage
+ withTag:ToolbarMoveBackwardTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarMoveToFrontIdentifier
+ withImage:ToolbarMoveToFrontImage
+ withTag:ToolbarMoveToFrontTag];
+
+ [self addToolbarItemWithIdentifier:ToolbarMoveToBackIdentifier
+ withImage:ToolbarMoveToBackImage
+ withTag:ToolbarMoveToBackTag];
+
+
+ NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier:ToolbarIdentifier] autorelease];
+
+ [toolbar setAllowsUserCustomization:YES];
+ [toolbar setAutosavesConfiguration:YES];
+ [toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];
+ [toolbar setSizeMode:NSToolbarSizeModeSmall];
+ [toolbar setDisplayMode:NSToolbarDisplayModeLabelOnly];
+ [toolbar setDelegate:self];
+ [toolbar setSelectedItemIdentifier:ToolbarBrowseToolIdentifier];
+ [toolbar setVisible:NO];
+
+ [[_drawView window] setToolbar:toolbar];
+}
+
+
+- (void)clickedToolbarItem:(id)sender
+{
+ int tag = [sender tag];
+
+ switch(tag) {
+#if 0
+ case ToolbarBrowseToolTag:
+ [_drawView setToolMode:DrawViewToolBrowse];
+ break;
+ case ToolbarPanToolTag:
+ [_drawView setToolMode:DrawViewToolPan];
+ break;
+ case ToolbarZoomToolTag:
+ [_drawView setToolMode:DrawViewToolZoom];
+ break;
+ case ToolbarPointerToolTag:
+ [_drawView setToolMode:DrawViewToolArrow];
+ break;
+ case ToolbarRectangleToolTag:
+ [_drawView setToolMode:DrawViewToolRectangle];
+ break;
+ case ToolbarElipseToolTag:
+ [_drawView setToolMode:DrawViewToolElipse];
+ break;
+ case ToolbarTriangleToolTag:
+ [_drawView setToolMode:DrawViewToolTriangle];
+ break;
+ case ToolbarMoveForwardTag:
+ [_drawView moveSelectionForward:sender];
+ break;
+ case ToolbarMoveBackwardTag:
+ [_drawView moveSelectionBackward:sender];
+ break;
+ case ToolbarDeleteSelectionTag:
+ [_drawView deleteSelection:sender];
+ break;
+#endif
+ default:
+ NSLog(@"Toolbar item: %i not implemented!", tag);
+ }
+
+ [_drawView setNeedsDisplay:YES];
+}
+
+// NSToolbar delegate methods
+- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdent
+ willBeInsertedIntoToolbar:(BOOL)willBeInserted
+{
+ NSToolbarItem * toolbarItem = [_toolbarItems objectForKey:itemIdent];
+
+ if( toolbarItem == nil )
+ toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdent] autorelease];
+
+ return toolbarItem;
+}
+
+- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
+{
+ return [NSArray arrayWithObjects:
+ ToolbarBrowseToolIdentifier,
+ ToolbarPanToolIdentifier,
+ ToolbarZoomToolIdentifier,
+ ToolbarPointerToolIdentifier,
+ ToolbarRectangleToolIdentifier,
+ ToolbarElipseToolIdentifier,
+ ToolbarTriangleToolIdentifier,
+ ToolbarDeleteShapeIdentifier,
+ NSToolbarShowColorsItemIdentifier,
+ ToolbarMoveForwardIdentifier,
+ ToolbarMoveBackwardIdentifier,
+ ToolbarMoveToFrontIdentifier,
+ ToolbarMoveToBackIdentifier,
+ NSToolbarCustomizeToolbarItemIdentifier,
+ NSToolbarFlexibleSpaceItemIdentifier,
+ NSToolbarSpaceItemIdentifier,
+ NSToolbarSeparatorItemIdentifier, nil];
+}
+
+- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
+{
+ return [NSArray arrayWithObjects:
+ ToolbarBrowseToolIdentifier,
+ ToolbarPanToolIdentifier,
+ //ToolbarZoomToolIdentifier,
+ NSToolbarFlexibleSpaceItemIdentifier,
+ ToolbarPointerToolIdentifier,
+ ToolbarRectangleToolIdentifier,
+ ToolbarElipseToolIdentifier,
+ //ToolbarTriangleToolIdentifier,
+ //NSToolbarSeparatorItemIdentifier,
+ ToolbarDeleteShapeIdentifier,
+ //ToolbarMoveForwardIdentifier,
+ //ToolbarMoveBackwardIdentifier,
+ //ToolbarMoveToFrontIdentifier,
+ //ToolbarMoveToBackIdentifier,
+ NSToolbarSeparatorItemIdentifier,
+ //NSToolbarShowColorsItemIdentifier,
+ //NSToolbarFlexibleSpaceItemIdentifier,
+ NSToolbarCustomizeToolbarItemIdentifier,
+ nil];
+}
+
+- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
+{
+ return [NSArray arrayWithObjects:
+ ToolbarBrowseToolIdentifier,
+ ToolbarPanToolIdentifier,
+ ToolbarZoomToolIdentifier,
+ ToolbarPointerToolIdentifier,
+ ToolbarRectangleToolIdentifier,
+ ToolbarElipseToolIdentifier,
+ ToolbarTriangleToolIdentifier,
+ nil];
+}
+
+- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem
+{
+ BOOL enabled = YES;
+
+#if 0
+ switch([theItem tag]) {
+ case ToolbarMoveForwardTag:
+ case ToolbarMoveBackwardTag:
+ case ToolbarMoveToFrontTag:
+ case ToolbarMoveToBackTag:
+ case ToolbarDeleteSelectionTag:
+ enabled = ([[_drawView selectedCanvasItems] count] != 0);
+ }
+#endif
+
+ return enabled;
+}
+
+@end