From: Max B. <be...@ma...> - 2003-04-23 10:54:16
|
Hello farplugins-new-api, Когда будет возможность я сделаю wiki, выложу туда и буду детализировать и перерабатывать, а пока вот: // Текстовый интерфейс пользователя package TextUI{ interface TextCanvas{ textOut(x,y,text); int width, height; } interface Console:TextCanvas{ // я плохо знаю консоль и не скажу сразу, что тут должно быть // специфичного } interface Visible{ draw(TextCanvas canvas); } interface Control:Visible{ processKey(Key key); processMouse(MouseEvent mouse); } // Окно содержит внутри один контрол. Оно может добавить к его // внешнему виду нечто для управления самим окном, а может и не // добавлять (pattern "decorator"). interface Window:Control{ Rectangle border; Control contents; } interface Container:Control{ List <Control> controls; // контрол, которому поступают события клавиатуры Control active; } interface WindowManager:Container{ List<Window> windows===controls; Window active==inherited.active; } } package Processes{ interface Process{ // общая продолжительность процесса в условных единицах int length, // текушее состояние процесса в условных единицах progress; void stop(); void pause(); void resume(); } } package ProcessesTextUI{ interface ProgressDialog:TextUI.Control{ Process process; } } package FileSystem{ interface FileSystemItem{ String name; void delete(); void moveTo(Folder target, String newName=null); Process newMovingTo(Folder target, String newName=null); ... } interface File:FileSystemItem{ Stream open(); ... }; interface Folder{ List <FileSystemItem> items; ... moveFrom(FileSystemItem item, String newName=null); Process newMovingFrom(FileSystemItem item, String newName=""); ... }; } package FileSystemTextUI{ interface Panel:TextUI.Control{ Folder folder; File current; Collection <File> selected; } } // действия package Actions{ interface Item{ String name; String description; } interface Action:Item{ void do(IUnknown argument); } interface KeyActionMap{ Action get(Key key); } interface Folder:Item{ List<Item> Items; } interface } package ActionsTextUI{ // Меню показывает папку действий interface Menu:TextUI.Control{ Actions.Folder Folder; } } -- Best regards, Max mailto:be...@ma... http://belugin.newmail.ru ICQ:9406811 |