|
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
|