ProjectManager  0.2
ProjectModule.h
1 /*
2  ProjectModule.h
3 
4  Interface declaration of the ProjectModule class for the
5  ProjectManager application.
6 
7  Copyright (C) 2005, 2006 Saso Kiselkov
8 
9  This program is free software; you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation; either version 2 of the License, or
12  (at your option) any later version.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23 
24 #import <Foundation/NSObject.h>
25 #import <AppKit/NSMenu.h>
26 
27 @class NSString, NSToolbarItem, ProjectDocument, NSView;
28 
29 extern NSString * const CurrentProjectModuleDidChangeNotification;
30 
44 @protocol ProjectModule <NSObject, NSMenuValidation>
45 
49 + (NSString *) moduleName;
50 
51 + (NSString *) humanReadableModuleName;
52 
56 - initWithDocument: (ProjectDocument *) document
57  infoDictionary: (NSDictionary *) infoDict;
58 
72 - (void) finishInit;
73 
79 
84 - (NSView *) view;
85 
94 - (NSDictionary *) infoDictionary;
95 
102 - (BOOL) regenerateDerivedFiles;
103 
108 - (NSArray *) moduleMenuItems;
109 
114 - (NSArray *) toolbarItemIdentifiers;
115 
122 - (NSToolbarItem *) toolbarItemForItemIdentifier: (NSString *) itemIdentifier;
123 
128 - (BOOL) validateToolbarItem: (NSToolbarItem *) toolbarItem;
129 
130 @end
131 
132 static inline NSMenuItem *
133 PMMakeMenuItem (NSString * title, SEL action, NSString * keyEquivalent,
134  id target)
135 {
136  NSMenuItem * item;
137 
138  item = [[[NSMenuItem alloc]
139  initWithTitle: title action: action keyEquivalent: keyEquivalent]
140  autorelease];
141  [item setTarget: target];
142 
143  return item;
144 }
ProjectWindowController
Definition: ProjectWindowController.h:39
-[ProjectWindowController setCurrentModule:]
void setCurrentModule:(id< ProjectModule > aModule)
Sets the current module displayed in the receiver's project window.
Definition: ProjectWindowController.m:167
+[ProjectModuleLoader shared]
id shared()
Returns a shared instance of a ProjectModuleLoader.
Definition: ProjectModuleLoader.m:38
ProjectTypeLoader
Definition: ProjectTypeLoader.h:31
ProjectDocument::projectType
id< ProjectType > projectType
Returns the project type object associated currently with the project.
Definition: ProjectDocument.h:48
ProjectDocument
Definition: ProjectDocument.h:43
-[ProjectModule-p regenerateDerivedFiles]
BOOL regenerateDerivedFiles()
Sent to the project module when it is to regenerate it's derived files which are generated from other...
-[ProjectModuleLoader projectModuleForModuleName:project:infoDictionary:]
id< ProjectModule > projectModuleForModuleName:project:infoDictionary:(NSString *projectModuleName,[project] ProjectDocument *project,[infoDictionary] NSDictionary *infoDict)
Initializes a project type of type ‘projectTypeID’ for a project named ‘projectName’,...
Definition: ProjectModuleLoader.m:93
-[ProjectModule-p infoDictionary]
NSDictionary * infoDictionary()
Instructs the project module to return an archivable version of it's data that it wishes to be saved ...
ProjectDocument(Private)
Definition: ProjectDocument.m:164
SourceEditorDocument
Definition: SourceEditorDocument.h:35
-[ProjectModule-p moduleMenuItems]
NSArray * moduleMenuItems()
Should return an array of NSMenuItem's which will be put into the module's submenu.
ProjectModule-p
This protocol declares methods which project modules must implement.
Definition: ProjectModule.h:44
-[ProjectDocument(Private) getProjectModulesData]
NSDictionary * getProjectModulesData()
Queries all project modules for their data dictionaries and returns them all in one aggregate diction...
Definition: ProjectDocument.m:742
ProjectDocument::moduleMenuEntries
NSArray * moduleMenuEntries
An array of menu items of project modules which are to appear in the Modules menu.
Definition: ProjectDocument.h:56
-[ProjectDocument currentProjectModule]
id< ProjectModule > currentProjectModule()
Returns the currently displayed project module.
Definition: ProjectDocument.m:571
ProjectDocument::projectDirectory
NSString * projectDirectory
Returns a path to where the project's directory is located.
Definition: ProjectDocument.h:45
ProjectWindowController::currentModule
NSObject< ProjectModule > * currentModule
Returns the currently visible project module.
Definition: ProjectWindowController.h:44
-[ProjectDocument projectMenuEntries]
NSArray * projectMenuEntries()
This message is sent to the receiver by the app delegate when the receiver becomes the currently acti...
Definition: ProjectDocument.m:417
-[ProjectModule-p document]
ProjectDocument * document()
Should return the owner project document to which this project module belongs to.
-[ProjectModule-p finishInit]
void finishInit()
Finishes the initialization process of the project module.
ProjectModuleLoader
Definition: ProjectModuleLoader.h:31
ProjectDocument::projectTypeID
NSString * projectTypeID
Returns the type ID of the project's project type.
Definition: ProjectDocument.h:47
ProjectDocument::projectModules
NSArray * projectModules
Returns the project modules of the receiver.
Definition: ProjectDocument.h:50
-[ProjectWindowController logMessage:]
void logMessage:(NSString *aMessage)
Appends a message to the project log.
Definition: ProjectWindowController.m:379
+[ProjectTypeLoader shared]
id shared()
Returns a shared instance of a ProjectTypeLoader.
Definition: ProjectTypeLoader.m:38
-[ProjectModule-p view]
NSView * view()
Instructs the project module to return a view which will be put into the project's window this module...
+[ProjectModule-p moduleName]
NSString * moduleName()
Should return a unique module identifier name.
-[ProjectModule-p toolbarItemIdentifiers]
NSArray * toolbarItemIdentifiers()
A module should return the default toolbar item identifiers for it's toolbar.
ProjectType-p
This protocol is adopted by project type support objects.
Definition: ProjectType.h:40
ProjectDocument::projectName
NSString * projectName
Returns the abstract project name.
Definition: ProjectDocument.h:46