webengine/osswebengine/WebKitTools/DrawTest/DrawTestToolbarController.m
changeset 0 dd21522fd290
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 /*
       
     2  * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved.
       
     3  * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com>  All rights reserved.
       
     4  *
       
     5  * Redistribution and use in source and binary forms, with or without
       
     6  * modification, are permitted provided that the following conditions
       
     7  * are met:
       
     8  * 1. Redistributions of source code must retain the above copyright
       
     9  *    notice, this list of conditions and the following disclaimer.
       
    10  * 2. Redistributions in binary form must reproduce the above copyright
       
    11  *    notice, this list of conditions and the following disclaimer in the
       
    12  *    documentation and/or other materials provided with the distribution.
       
    13  *
       
    14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
       
    15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       
    16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
       
    18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       
    19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
       
    21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
       
    22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       
    23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       
    24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
       
    25  */
       
    26 
       
    27 #import "DrawTestToolbarController.h"
       
    28 
       
    29 enum
       
    30 {
       
    31     ToolbarBrowseToolTag = 0,
       
    32     ToolbarPanToolTag,
       
    33     ToolbarZoomToolTag,
       
    34     
       
    35     ToolbarPointerToolTag,
       
    36     ToolbarLineToolTag,
       
    37     ToolbarRectangleToolTag,
       
    38     ToolbarElipseToolTag,
       
    39     ToolbarTriangleToolTag,
       
    40     ToolbarPolyLineToolTag,
       
    41     ToolbarArcToolTag,
       
    42     
       
    43     ToolbarDeleteSelectionTag,
       
    44     
       
    45     ToolbarMoveForwardTag,
       
    46     ToolbarMoveBackwardTag,
       
    47     ToolbarMoveToFrontTag,
       
    48     ToolbarMoveToBackTag,
       
    49     ToolbarMiscItem
       
    50 };
       
    51 
       
    52 // Constants
       
    53 NSString *ToolbarIdentifier = @"Main Document Toolbar";
       
    54 
       
    55 NSString *ToolbarBrowseToolIdentifier = @"Browse";
       
    56 NSString *ToolbarPanToolIdentifier = @"Pan";
       
    57 NSString *ToolbarZoomToolIdentifier = @"Zoom";
       
    58 
       
    59 NSString *ToolbarPointerToolIdentifier = @"Pointer";
       
    60 NSString *ToolbarRectangleToolIdentifier = @"Rectangle";
       
    61 NSString *ToolbarElipseToolIdentifier = @"Oval";
       
    62 NSString *ToolbarTriangleToolIdentifier = @"Triangle";
       
    63 NSString *ToolbarPolyLineToolIdentifier = @"PolyLine";
       
    64 NSString *ToolbarArcToolIdentifier = @"Arc";
       
    65 
       
    66 NSString *ToolbarDeleteShapeIdentifier = @"Delete";
       
    67 NSString *ToolbarMoveForwardIdentifier = @"Forward";
       
    68 NSString *ToolbarMoveBackwardIdentifier = @"Backward";
       
    69 NSString *ToolbarMoveToFrontIdentifier = @"Front";
       
    70 NSString *ToolbarMoveToBackIdentifier = @"Back";
       
    71 
       
    72 NSString *ToolbarPointerToolImage = @"Toolbar_Pointer";
       
    73 NSString *ToolbarRectangleToolImage = @"Toolbar_Rectangle";
       
    74 NSString *ToolbarElipseToolImage = @"Toolbar_Oval";
       
    75 NSString *ToolbarTriangleToolImage = @"Toolbar_Triangle";
       
    76 
       
    77 NSString *ToolbarDeleteShapeImage = @"Toolbar_Delete";
       
    78 NSString *ToolbarMoveForwardImage = @"Toolbar_Forward";
       
    79 NSString *ToolbarMoveBackwardImage = @"Toolbar_Backward";
       
    80 NSString *ToolbarMoveToFrontImage = @"Toolbar_Front";
       
    81 NSString *ToolbarMoveToBackImage = @"Toolbar_Back";
       
    82 
       
    83 @interface DrawTestToolbarController (InternalMethods)
       
    84 - (void)setupToolbar;
       
    85 - (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag;
       
    86 - (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image;
       
    87 - (void)addToolbarItem:(NSString *)identifier
       
    88              withLabel:(NSString *)label
       
    89       withPaletteLabel:(NSString *)paletteLabel
       
    90              withImage:(NSString *)imageName
       
    91            withToolTip:(NSString *)toolTip
       
    92                withTag:(int)tag;
       
    93 @end
       
    94 
       
    95 
       
    96 @implementation DrawTestToolbarController
       
    97 
       
    98 - (id)initWithDrawView:(WebView *)drawView
       
    99 {
       
   100     if (self = [super init]){
       
   101         _drawView = [drawView retain];
       
   102         [self setupToolbar]; // could be done lazily.
       
   103     }
       
   104     return self;
       
   105 }
       
   106 
       
   107 - (void)dealloc
       
   108 {
       
   109     [_toolbarItems release];
       
   110     [super dealloc];
       
   111 }
       
   112 
       
   113 
       
   114 - (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image withTag:(int)tag
       
   115 {
       
   116     
       
   117     [self addToolbarItem:identifier
       
   118                withLabel:identifier
       
   119         withPaletteLabel:identifier
       
   120                withImage:image
       
   121              withToolTip:identifier
       
   122                  withTag:tag];
       
   123 }
       
   124 
       
   125 - (void)addToolbarItemWithIdentifier:(NSString *)identifier withImage:(NSString *)image
       
   126 {
       
   127     [self addToolbarItemWithIdentifier:identifier withImage:image withTag:ToolbarMiscItem];
       
   128 }
       
   129 
       
   130 - (void)addToolbarItem:(NSString *)identifier
       
   131              withLabel:(NSString *)label
       
   132       withPaletteLabel:(NSString *)paletteLabel
       
   133              withImage:(NSString *)imageName
       
   134            withToolTip:(NSString *)toolTip
       
   135                withTag:(int)tag
       
   136 {
       
   137     NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:identifier] autorelease];
       
   138     
       
   139     [item setLabel:label];
       
   140     [item setPaletteLabel:paletteLabel];
       
   141     [item setToolTip:toolTip];
       
   142     [item setImage:[NSImage imageNamed:imageName]];
       
   143     [item setTarget:self];
       
   144     [item setAction:@selector(clickedToolbarItem:)];
       
   145     [item setTag:tag];
       
   146     
       
   147     [_toolbarItems setObject:item forKey:identifier];
       
   148 }
       
   149 
       
   150 - (void)setupToolbar
       
   151 {
       
   152     _toolbarItems = [[NSMutableDictionary alloc] init];
       
   153     
       
   154     [self addToolbarItemWithIdentifier:ToolbarBrowseToolIdentifier 
       
   155                              withImage:ToolbarPointerToolImage
       
   156                                withTag:ToolbarBrowseToolTag];
       
   157     [[_toolbarItems objectForKey:ToolbarBrowseToolIdentifier] setImage:[[NSCursor pointingHandCursor] image]];
       
   158     
       
   159     [self addToolbarItemWithIdentifier:ToolbarPanToolIdentifier 
       
   160                              withImage:ToolbarPointerToolImage
       
   161                                withTag:ToolbarPanToolTag];
       
   162     [[_toolbarItems objectForKey:ToolbarPanToolIdentifier] setImage:[[NSCursor openHandCursor] image]];
       
   163     
       
   164     [self addToolbarItemWithIdentifier:ToolbarZoomToolIdentifier 
       
   165                              withImage:ToolbarPointerToolImage
       
   166                                withTag:ToolbarZoomToolTag];
       
   167     
       
   168     
       
   169     [self addToolbarItemWithIdentifier:ToolbarPointerToolIdentifier 
       
   170                              withImage:ToolbarPointerToolImage
       
   171                                withTag:ToolbarPointerToolTag];
       
   172     
       
   173     [self addToolbarItemWithIdentifier:ToolbarRectangleToolIdentifier 
       
   174                              withImage:ToolbarRectangleToolImage
       
   175                                withTag:ToolbarRectangleToolTag];
       
   176     
       
   177     [self addToolbarItemWithIdentifier:ToolbarElipseToolIdentifier 
       
   178                              withImage:ToolbarElipseToolImage 
       
   179                                withTag:ToolbarElipseToolTag];
       
   180     
       
   181     [self addToolbarItemWithIdentifier:ToolbarTriangleToolIdentifier 
       
   182                              withImage:ToolbarTriangleToolImage
       
   183                                withTag:ToolbarTriangleToolTag];
       
   184     
       
   185     [self addToolbarItemWithIdentifier:ToolbarDeleteShapeIdentifier 
       
   186                              withImage:ToolbarDeleteShapeImage
       
   187                                withTag:ToolbarDeleteSelectionTag];
       
   188     
       
   189     [self addToolbarItemWithIdentifier:ToolbarMoveForwardIdentifier 
       
   190                              withImage:ToolbarMoveForwardImage
       
   191                                withTag:ToolbarMoveForwardTag];
       
   192     
       
   193     [self addToolbarItemWithIdentifier:ToolbarMoveBackwardIdentifier 
       
   194                              withImage:ToolbarMoveBackwardImage
       
   195                                withTag:ToolbarMoveBackwardTag];
       
   196     
       
   197     [self addToolbarItemWithIdentifier:ToolbarMoveToFrontIdentifier 
       
   198                              withImage:ToolbarMoveToFrontImage
       
   199                                withTag:ToolbarMoveToFrontTag];
       
   200     
       
   201     [self addToolbarItemWithIdentifier:ToolbarMoveToBackIdentifier 
       
   202                              withImage:ToolbarMoveToBackImage
       
   203                                withTag:ToolbarMoveToBackTag];
       
   204     
       
   205     
       
   206     NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier:ToolbarIdentifier] autorelease];
       
   207     
       
   208     [toolbar setAllowsUserCustomization:YES];
       
   209     [toolbar setAutosavesConfiguration:YES];
       
   210     [toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];
       
   211     [toolbar setSizeMode:NSToolbarSizeModeSmall];
       
   212     [toolbar setDisplayMode:NSToolbarDisplayModeLabelOnly];
       
   213     [toolbar setDelegate:self];
       
   214     [toolbar setSelectedItemIdentifier:ToolbarBrowseToolIdentifier];
       
   215     [toolbar setVisible:NO];
       
   216     
       
   217     [[_drawView window] setToolbar:toolbar];
       
   218 }
       
   219 
       
   220 
       
   221 - (void)clickedToolbarItem:(id)sender
       
   222 {
       
   223     int tag = [sender tag];
       
   224     
       
   225     switch(tag) {
       
   226 #if 0
       
   227         case ToolbarBrowseToolTag:
       
   228             [_drawView setToolMode:DrawViewToolBrowse];
       
   229             break;
       
   230         case ToolbarPanToolTag:
       
   231             [_drawView setToolMode:DrawViewToolPan];
       
   232             break;
       
   233         case ToolbarZoomToolTag:
       
   234             [_drawView setToolMode:DrawViewToolZoom];
       
   235             break;
       
   236         case ToolbarPointerToolTag:
       
   237             [_drawView setToolMode:DrawViewToolArrow];
       
   238             break;
       
   239         case ToolbarRectangleToolTag:
       
   240             [_drawView setToolMode:DrawViewToolRectangle];
       
   241             break;
       
   242         case ToolbarElipseToolTag:
       
   243             [_drawView setToolMode:DrawViewToolElipse];
       
   244             break;
       
   245         case ToolbarTriangleToolTag:
       
   246             [_drawView setToolMode:DrawViewToolTriangle];
       
   247             break;
       
   248         case ToolbarMoveForwardTag:
       
   249             [_drawView moveSelectionForward:sender];
       
   250             break;
       
   251         case ToolbarMoveBackwardTag:
       
   252             [_drawView moveSelectionBackward:sender];
       
   253             break;
       
   254         case ToolbarDeleteSelectionTag:
       
   255             [_drawView deleteSelection:sender];
       
   256             break;
       
   257 #endif
       
   258         default:
       
   259             NSLog(@"Toolbar item: %i not implemented!", tag);
       
   260     }
       
   261     
       
   262     [_drawView setNeedsDisplay:YES];
       
   263 }
       
   264 
       
   265 // NSToolbar delegate methods
       
   266 - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdent 
       
   267  willBeInsertedIntoToolbar:(BOOL)willBeInserted
       
   268 { 
       
   269     NSToolbarItem *    toolbarItem = [_toolbarItems objectForKey:itemIdent];
       
   270     
       
   271     if( toolbarItem == nil )
       
   272         toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdent] autorelease];
       
   273     
       
   274     return toolbarItem;
       
   275 }
       
   276 
       
   277 - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
       
   278 {
       
   279     return [NSArray arrayWithObjects:
       
   280         ToolbarBrowseToolIdentifier,
       
   281         ToolbarPanToolIdentifier,
       
   282         ToolbarZoomToolIdentifier,
       
   283         ToolbarPointerToolIdentifier,
       
   284         ToolbarRectangleToolIdentifier,
       
   285         ToolbarElipseToolIdentifier,
       
   286         ToolbarTriangleToolIdentifier,
       
   287         ToolbarDeleteShapeIdentifier, 
       
   288         NSToolbarShowColorsItemIdentifier,
       
   289         ToolbarMoveForwardIdentifier,
       
   290         ToolbarMoveBackwardIdentifier,
       
   291         ToolbarMoveToFrontIdentifier,
       
   292         ToolbarMoveToBackIdentifier,
       
   293         NSToolbarCustomizeToolbarItemIdentifier,
       
   294         NSToolbarFlexibleSpaceItemIdentifier, 
       
   295         NSToolbarSpaceItemIdentifier, 
       
   296         NSToolbarSeparatorItemIdentifier, nil];
       
   297 }
       
   298 
       
   299 - (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
       
   300 {    
       
   301     return [NSArray arrayWithObjects:
       
   302         ToolbarBrowseToolIdentifier,
       
   303         ToolbarPanToolIdentifier,
       
   304         //ToolbarZoomToolIdentifier,
       
   305         NSToolbarFlexibleSpaceItemIdentifier,
       
   306         ToolbarPointerToolIdentifier,
       
   307         ToolbarRectangleToolIdentifier,
       
   308         ToolbarElipseToolIdentifier,
       
   309         //ToolbarTriangleToolIdentifier, 
       
   310         //NSToolbarSeparatorItemIdentifier,
       
   311         ToolbarDeleteShapeIdentifier, 
       
   312         //ToolbarMoveForwardIdentifier,
       
   313         //ToolbarMoveBackwardIdentifier,
       
   314         //ToolbarMoveToFrontIdentifier,
       
   315         //ToolbarMoveToBackIdentifier, 
       
   316         NSToolbarSeparatorItemIdentifier,
       
   317         //NSToolbarShowColorsItemIdentifier, 
       
   318         //NSToolbarFlexibleSpaceItemIdentifier, 
       
   319         NSToolbarCustomizeToolbarItemIdentifier,
       
   320         nil];
       
   321 }
       
   322 
       
   323 - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
       
   324 {
       
   325     return [NSArray arrayWithObjects:
       
   326         ToolbarBrowseToolIdentifier,
       
   327         ToolbarPanToolIdentifier,
       
   328         ToolbarZoomToolIdentifier,    
       
   329         ToolbarPointerToolIdentifier,
       
   330         ToolbarRectangleToolIdentifier,
       
   331         ToolbarElipseToolIdentifier,
       
   332         ToolbarTriangleToolIdentifier,
       
   333         nil];
       
   334 }
       
   335 
       
   336 - (BOOL)validateToolbarItem:(NSToolbarItem *)theItem
       
   337 {
       
   338     BOOL enabled = YES;
       
   339 
       
   340 #if 0    
       
   341     switch([theItem tag]) {
       
   342         case ToolbarMoveForwardTag:
       
   343         case ToolbarMoveBackwardTag:
       
   344         case ToolbarMoveToFrontTag:
       
   345         case ToolbarMoveToBackTag:
       
   346         case ToolbarDeleteSelectionTag:
       
   347             enabled = ([[_drawView selectedCanvasItems] count] != 0);
       
   348     }
       
   349 #endif
       
   350     
       
   351     return enabled;
       
   352 }
       
   353 
       
   354 @end