This is AppController.m in view mode; [Download] [Up]
#import <Foundation/Foundation.h> #import <MiscAppKit/MiscTreeDiagramView.h> #import <MiscAppKit/MiscTreeDiagram.h> #import <MiscAppKit/MiscDiagramTree.h> #import <MiscAppKit/MiscNodeStyle.h> #import <MiscAppKit/MiscTreeStyle.h> #import "TDStyleWell.h" #import "InfoView.h" #import "AppController.h" @implementation AppController - (void)updateControls { id diagram, node, style; diagram = [treeView diagram]; node = [diagram root]; style = [diagram treeStyle]; [borderField setFloatValue:[node border]]; [borderSlider setFloatValue:[node border]]; [distanceToParentField setFloatValue:[node distanceToParent]]; [distanceToParentSlider setFloatValue:[node distanceToParent]]; [bendingFactorField setFloatValue:[style bendingFactor]]; [bendingFactorSlider setFloatValue:[style bendingFactor]]; [bendingFactorField setEnabled:[style lineType]]; [bendingFactorSlider setEnabled:[style lineType]]; [linkButton setState:[style lineType]]; [orientationButton setState:[node layoutType]]; [shadowToggle setState:[style shadow]]; [shadowColorWell setColor:[style shadowColor]]; node = [diagram selectedNode]; if(node){ style = [node nodeStyle]; [shapeMatrix selectCellWithTag:[node shapeType]]; [outlineToggle setState:[style outline]]; [fillColorWell setColor:[style fillColor]]; [outlineColorWell setColor:[style outlineColor]]; [outlineLinewidthField setFloatValue:[style linewidth]]; [outlineLinewidthSlider setFloatValue:[style linewidth]]; [childEndingMatrix selectCellWithTag:[style childEnding]]; [parentEndingMatrix selectCellWithTag:[style parentEnding]]; [textPositionMatrix selectCellWithTag:[style textPlacement]]; [automaticResizeToggle setState:[style automaticResize]]; } } - (void)awakeFromNib { [[treeView diagram] setDoc:self]; [styleWell setWellClient:self]; [nodeWell setOperationMode:MiscPaletteMode]; } - (void)changeShape:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [diagram setShapeType:[[sender selectedCell] tag] of:node]; } - (void)changeParentEnding:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [diagram setParentEnding:[[sender selectedCell] tag] of:node]; } - (void)changeChildEnding:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [diagram setChildEnding:[[sender selectedCell] tag] of:node]; } - (void)changeOutlineColor:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [diagram setOutlineColor:[sender color] of:node]; } - (void)changeFillColor:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [diagram setFillColor:[sender color] of:node]; } - (void)changeShadowColor:(id)sender { id diagram; diagram = [treeView diagram]; [diagram setShadowColor:[sender color]]; } - (void)changeLineColor:(id)sender { return; } - (void)changeOutline:(id)sender { return; } - (void)changeFill:(id)sender { return; } - (void)changeShadow:(id)sender { id diagram; diagram = [treeView diagram]; [diagram setShadow:[sender state]]; } - (void)changeLine:(id)sender { return; } - (void)changeOutlineLinewidth:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node){ [diagram setLinewidth:[sender floatValue] of:node]; if(sender == outlineLinewidthSlider) [outlineLinewidthField setFloatValue:[sender floatValue]]; else [outlineLinewidthSlider setFloatValue:[sender floatValue]]; } } - (void)changeLineLinewith:(id)sender { return; } - (void)changeDistanceToParent:(id)sender { id diagram; diagram = [treeView diagram]; [diagram setDistanceToParent:[sender floatValue]]; if(sender == distanceToParentField) [distanceToParentSlider setFloatValue:[sender floatValue]]; else [distanceToParentField setFloatValue:[sender floatValue]]; } - (void)changeBorder:(id)sender { id diagram; diagram = [treeView diagram]; [diagram setBorder:[sender floatValue]]; if(sender == borderField) [borderSlider setFloatValue:[sender floatValue]]; else [borderField setFloatValue:[sender floatValue]]; } - (void)changeOrientation:(id)sender { id diagram; diagram = [treeView diagram]; [diagram setLayoutType:[sender state]]; } - (void)changeLink:(id)sender { id diagram; diagram = [treeView diagram]; [diagram setLineType:[sender state]]; [bendingFactorField setEnabled:[sender state]]; [bendingFactorSlider setEnabled:[sender state]]; } - (void)changeBendingFactor:(id)sender { id diagram; diagram = [treeView diagram]; [diagram setBendingFactor:[sender floatValue]]; if(sender == bendingFactorSlider) [bendingFactorField setFloatValue:[sender floatValue]]; else [bendingFactorSlider setFloatValue:[sender floatValue]]; } - (void)changeTextPlacement:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [diagram setTextPlacement:[[sender selectedCell] tag] of:node]; } - (void)changeAutomaticResize:(id)sender { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [diagram setAutomaticResize:[sender state] of:node]; } - (void)setDirty:(BOOL)aBOOL { return; } - (void)selectionChangedTo:anObject { id diagram, node; [self updateControls]; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) [styleWell setEnabled:YES]; else [styleWell setEnabled:NO]; return; } - (BOOL)hasSelection { id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node) return YES; else return NO; } - styleSelection { NSDictionary *inspectorContents; NSString *keys[2]; NSObject *values[2]; id diagram, node; diagram = [treeView diagram]; node = [diagram selectedNode]; if(node){ keys[0] = @"NodeStyle"; keys[1] = @"ShapeType"; values[0] = [node nodeStyle]; values[1] = [NSNumber numberWithInt:[node shapeType]]; inspectorContents = [NSDictionary dictionaryWithObjects:(id *)values forKeys:keys count:2]; return inspectorContents; } else return nil; } - (void)showInfoPanel:(id)sender { if(!infoPanel) [NSBundle loadNibNamed:@"Info" owner:self]; [infoPanel makeKeyAndOrderFront:self]; [infoView start:self]; } - (void)saveDG:(id)sender { NSSavePanel *savePanel = [NSSavePanel savePanel]; [savePanel setRequiredFileType:@"diagram2"]; [savePanel setTitle:@"Save DG"]; if([savePanel runModal]) [treeView writeDiagramToDGFile:[savePanel filename]]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.