This page (revision-16) was last changed on 10-Mar-2010 00:19 by JensKapitza 

This page was created on 25-Feb-2009 17:01 by JensKapitza

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
16 10-Mar-2010 00:19 15 KB JensKapitza to previous add link
15 11-Dec-2009 12:12 15 KB ThomasBayen to previous | to last Link zu Commons VFS
14 10-Dec-2009 23:03 15 KB JensKapitza to previous | to last FTP
13 04-Apr-2009 11:58 14 KB JensKapitza to previous | to last SSH mit Java
12 28-Mar-2009 13:15 14 KB JensKapitza to previous | to last Maven und Module und Beschreibungen
11 23-Mar-2009 23:31 12 KB JensKapitza to previous | to last Idee und Interaktion
10 23-Mar-2009 22:20 9 KB JensKapitza to previous | to last Mehrere Keycodes (Shortcuts)
9 22-Mar-2009 13:34 9 KB JensKapitza to previous | to last XML und DTD
8 19-Mar-2009 12:30 5 KB JensKapitza to previous | to last Weitere Dokumentation folgt noch (update)
7 19-Mar-2009 08:17 6 KB JensKapitza to previous | to last überarbeitung der dokumentation
6 28-Feb-2009 18:08 5 KB JensKapitza to previous | to last update xml info
5 26-Feb-2009 15:26 4 KB JensKapitza to previous | to last xml template
4 26-Feb-2009 15:01 3 KB JensKapitza to previous | to last einige menu punkte mehr
3 26-Feb-2009 14:09 1 KB JensKapitza to previous | to last Datei menu
2 26-Feb-2009 08:14 936 bytes JensKapitza to previous | to last link update
1 25-Feb-2009 17:01 935 bytes JensKapitza to last FileManager, Javaprojekt Dateibrowser

Page References

Incoming links Outgoing links

Version management

Difference between version and

= FileManager =

Dieses Projekt ist auf [BerliOs|https://developer.berlios.de/projects/file-manager/] gehostet. Hier, auf dieser Wiki kann man sich über einige zum Projekt bezogene Dinge unterhalten. Die Entwicklung ist Vorzugsweise auf Linux da es sich aber um ein Java basiertes Projekt handelt, sollte es in den Grundzügen überall laufen.

 Das Projekt wird später in den Desktop integriert,
 der dabei entstehende C Code ist nicht protierbar,
 auf andere Systeme als Vorgesehen.

----


== Kurz zum Projekt ==

Mir schwebt es vor ein Programm zu schreiben, dass den mc, nautilus, Xfce-Dateibrowsxer und Windows-Explorer vereint. Alle haben toole Funktionen und auch eine gute Integration in den Desktop. Diese Projekt versucht ersteinmal einen einfachen Dateibrowser zu ersetzen und eine brauchbare Schnittstelle für die jeweiligen Desktops zu bieten. In einem zweiten Schritt wird die Integration in den Desktop versucht. Das Projekt soll weiter zumindest folgenndes können.

* GUI Anzeige
** Anzeige vollständig über XML änderbar
** Aktionen können auch selber definiert werden und den Menüs angefügt werden.
** Konfigurationsdialoge, die einfache Dinge tuen sollen aus Konfigurationen (XML) erstellt bzw. definiert werden können
* Consolen Anzeige
* Rein(e) Tastaturbedinung
* Mount von Virtuellen Dateisystemen
** Unter Linux: __mount__ unterstüzen
** Unter Windows: __net use__ unterstüzen

== Bibliotheken ==

|| Name || Bemerkung
| [inotify|http://code.google.com/p/inotify-java/] | Ermöglicht den Zugriff auf mehr Dateiattribute.
| [fuse|http://sourceforge.net/projects/fuse-j] | Nutzen von FUSE
| [VFS|http://commons.apache.org/vfs/] | Verschiedene Dateisysteme

----


== Menu ==

Die meisten GUI-Anwendungen haben ein Menu, hier soll eine Grobe stüze sein, was zumindes bedacht werden sollte. Eine Mögliche aufteilung (standard) ist unten zu sehen.


=== Datei ===      

|| Neuer Tab (Reiter)        | Ein neues Tab anlegen
|| Neues Fenster             | Ein neues Fenster öffnen
|| Öffnen -->                | Vorschläge zum wählen des Programmes das für das Öffnen der markierten Datei verwendet werden soll.
|| Ordner anlegen            | Ordner anlegen
|| Datei anlegen             | Datei anlegen
|| Verknüpfung anlegen       | Linux __ln__ oder in Windows eine Datei (NTFS kann auch sym-links)
|| Mit Server/Service verbinden      | VFS auf ein anderes Ziel einstellen oder mit einem Service verbinden (Jabber Bot)
|| Datei Eigenschaften       | Eigenschaften der markierten Datei
|| Müll anzeigen/leeren               | Dateien die als gelöscht markiert sind Löschen
|| Alle Fenster/Anzeigen schließen    | Alle Kinder (Fenster) schließen. (Wenn Aufrufer selbs Kind ist wird er zum Elternelement)
|| Einstellungen             | Konfiguration des Programmes
|| Beenden                   | Anwendung beenden


=== Bearbeiten ===
|| Ausschneiden            | Eine Datei zum bewegen markieren
|| Kopieren                | Eine Datei zum duplizieren markieren
|| Einfügen                | Eine markierte Datei verschieben/kopieren.
|| Alles auswählen         | Dateien in der Ansicht markieren
|| Nach Muster auswählen   | Dateien in der Ansicht, die auf die Regel passen, markieren
|| Auswahl umkehren        | Datei markierung invertieren
|| Duplizieren             | __Aktion__ Kopieren und Einfügen
|| Umbenennen              | Eine Datei mit neuem Namen versehen
|| Zum löschen markierern  | Nur markieren und nicht bewegen (FS kann RO-Mouted sein)
|| Direkt löschen          | Lösche eine Datei aus dem System (FS muss schreibbar sein)
|| Senden an               | Datei versenden Via Mail, an Programm (STDOUT) oder Server
|| Sync                    | Dateien abgleichen
|| Verschlüsseln           | Datei verschlüsseln mit AES, ... (GPG).
|| Signieren               | Datei signieren mit PGP
|| Archiv anlegen          | Markierte Dateien zu einem Zip, Jar, Tar, 7zip, ... zusammenstellen

===  Ansicht ===

|| Symbolleisten -->       | Alle möglichen Symbolleisten
|| Vollbild                | Keine Popupmeldungen mehr
|| Dateiansicht -->        | Baum, Liste, Normal, ...
|| Verborgene Datein       | Dateien Anzeigen?  (Linux und Windows haben andere Regeln.)
|| Geschützte Datein       | Dateien Anzeigen? (Kann durch eine XML Datei festgelegt werden.)
|| Anordnung -->           | Sortiertung der aktiven Anzeige, Willkür, Datum, ...
|| Icons -->               | Bilder (Vorschau) Vergrössern, Verkleinern, normal

=== Lesezeichen (Gehe zu) ===

|| Ebene auf                | Eine Ebene hochgehen
|| Zurück in der History    | Eine Ansicht zuvor
|| Vor in der History       | Eine Ansicht danach
|| Verlauf leeren           | Zurück und Vor geht nicht mehr
|| Eintrag einfügen         | Einen Sprungeitrag anlegen (XML Datei muss schreibbar sein)
|| Einträge verwalten       | Die XML Datei editieren (Seperater Editor?)
|| Home                     | Home Verzeichnis (auch unter Windows)
|| root                     | unter Windows C: unterLinux /

=== Hilfe ===
|| Hilfe                  | Unter Windows sollte die Windowshilfe angezeigt werden oder ein ähnlicher gut übersichtlicher ersatz. Linux Hilfesysteme unterstüzen?
|| About                  | Ein paar Informationen zum Programm und Entwicklung


=== Modus ===

|| Zu Consolenmodus | In den Consolenmodus
|| Zu GUI-Modus     | In die GUI-Anzeige
|| Tastaturmodus    | Maus abstellen (Tastenkürzel navigation oder FXX Tasten)

== GUI Konfiguration ==

Die GUI soll komplett durch eine XML Datei erstellt werden. So dass jeder die Möglichkeit hat die GUI nach seinen Anforderungen anzupassen. Ähnlich wie bei Firefox und Co. Soll jeder seine Anzeige selber in die Hand nehmen können. Dazu kommt, das einbinden von fremden Programmen - Programm Pipe wird integriert -, das ändern der Anzeige nicht nur wegblenden der Eintäge sonder auch das Verschieben dieser in den Kategorien. Weiter muss auch das auslösen von Aktionen unter bestimmten Bedingungen ermöglicht werden.



[{Tag Java MenschComputerInteraktion JensKapitza}]


----

=== XML Beispiel ===

{{{
<!DOCTYPE xgui SYSTEM "xgui.dtd">
<window name="">
<!-- Die Hauptklasse -->
<class name="" />
<!-- Dieser Test muss wahr sein um das Fenster anzuzeigen. -->
<test class="" />
<!--
Wir haben die Möglichkeit auf Ereignisse zu reagieren. Ein scope vom
Wert public ermöglicht es auch Events, von auserhalb abzufangen,
private Events hingegen werden nur von der Klasse selbst bearbeitet
und nicht global Regestriert. Ist ein Event private, wird es bei einer
Zusammengesetzten Anzeige nur auf vom Container erzeugte Events
reagieren, nicht aber auf Events, der Unteranzeigen.
-->
<actions scope="public" name="">
<action name="" command="" event="" />
<!-- Dieser Test gilt für alle actions -->
<test class="" />
</actions>
<!-- Das normale Menu -->
<menubar name="">
<menu name="">
<!--
jeder Eintrag ist einer Klasse zugeteilt, die sich um die Anzeige
und Events kümmert!
-->
<item name="" command="" class="" />
</menu>
</menubar>

<!--
Wir definieren eine Anzeige, die wir bei Anwendungsstart auch
anzeigen?
-->
<views>
<view name="">
<!-- Die Klasse übernimmt die Anzeige -->
<class name="" />
<!-- wir können auf Events reagieren und etwas machen -->
<actions scope="private">
<action name="" command="" event="">
<!-- Ein Test muss Wahr sein, um
eine Action durchzuführen. -->
<test class="" />
</action>
</actions>
<!-- das Menu lässt sich erweitern oder verdecken -->
<menubar>
<menu name="" overlay="true">
<item name="" command="" class="" />
<!--
mit ref kann man ein Objekt wieder verwenden. Dabei wird von der
Wurzel aus der name zusamengesetzt. z.b Menu1.SubMenu2
-->
<ref name="" />
</menu>
</menubar>
</view>
<!-- Alle möglichen Anzeigen können hier definiert werden -->
<view name="">
<class name="" />
</view>
</views>
</window>

}}}


=== DTD ===

Eine DTD sollte für den Anfang reichen und ermöglicht es uns mit XPATH und XQUERY zu arbeiten.
Da eine ID immer eine Zahl sein muss, ist das Attribut name eingeführt. NAME ist einfacher TEXT und muss es muss eindeutig sein um auch den ref Tag zu verwenden.

{{{
<!ELEMENT window (class?,test*,actions?,menubar,views)>
<!ATTLIST window name CDATA #REQUIRED>

<!ELEMENT views (view+,actions?,test*,ref*)>
<!ELEMENT view (class?,actions?,test*,menubar?,ref*)>
<!ATTLIST view
name CDATA #REQUIRED
default (true|false) "false">

<!ELEMENT menubar (menu+,test*,ref*)>
<!ATTLIST menubar name CDATA #IMPLIED>

<!ELEMENT menu (item*,actions?,test*,ref*)>
<!ATTLIST menu
name CDATA #REQUIRED
visible (true|false) "true"
overlay (true|false) "true">

<!ELEMENT actions (action+,test*,ref*)>
<!ATTLIST actions
scope (private|protected|public) "public"
name CDATA #IMPLIED>

<!ELEMENT action (test*)>
<!ATTLIST action
name CDATA #REQUIRED
command CDATA #REQUIRED
event CDATA #REQUIRED>

<!ELEMENT class (test*)>
<!ATTLIST class name CDATA #REQUIRED>

<!ELEMENT test EMPTY>
<!ATTLIST test class CDATA #REQUIRED>

<!ELEMENT item (test*)>
<!ATTLIST item
name CDATA #REQUIRED
command CDATA #REQUIRED
class CDATA #REQUIRED>

<!ELEMENT ref EMPTY>
<!ATTLIST ref name CDATA #REQUIRED>
}}}

--JensKapitza, 22-Mar-2009 13:34


----

=== Nachtrag Shortcuts ===

In meinen bisherigen Überlegungen fehlte die Möglichkeit von Tastencodes, das will ich hier nun Nachholen.

==== DTD ====

action Elemente sollten diese key Tags nun aber auch erlauben.

 <!ELEMENT key EMPTY>
 <!ATTLST key code CDATA #REQUIRED>

==== XML ====
Der code ist durch eine Codemap (angelehnt an den XServer) hinterlegt. So dass bestimmte Codes auf verschiedenste Tasten und kombinationen aus Ihnen abgebildet werden.

 <action ...>
    <key code="132" />
 </action>
 



--JensKapitza, 23-Mar-2009 22:20