FileBrowser

Sojus

Sojus

Aktives Mitglied
Thread Starter
Dabei seit
30.05.2006
Beiträge
144
Reaktionspunkte
3
Hallo

Als ich mir letzte Woche Pathfinder installiert habe fand ich das Browsen über die Dropdown menus ziemlich praktisch. Da ich aber keine 30€ für einen FileManager ausgeben wollte habe ich mir die Funktion jetzt selber in Java Programmiert.

http://grafschokola.gr.funpic.de/FB/MacFileBrowser.jar

man kann über das menu durch die Ordner in seinem Dateisystem browsen. Wenn man auf einen ordner Klickt sollte dieser im Finder geöffnet werden. Das funktioniert auch bei den Meissten ordnern, zbs ordner in der itunes bibliothek werden nicht geöffnet.

Die Funktion habe ich so implementiert.

public void mouseClicked(MouseEvent arg0) {
try {
Runtime.getRuntime().exec("open /System/Library/CoreServices/Finder.app/ "+this.path.getAbsolutePath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.path.getAbsolutePath());
}

Ich denke es liegt irgendwie am befehl, den ich an den finder schicke. Hat jemand eine idee wie ich die funktion verbesser könnte?

mfg Sojus

PS: wie findet ihr die Idee eines solchen FileBrowsers?
 
ich habe das problem gefunden, weis aber nicht wie lösen :-(

wenn im verzeichnisname ein leerschlag ist zbs "Ska p" versteht der finder das als 2 argument. habe es schon mit anführungszeichen probiert, geht aber auch nicht. Hat jemand eine idee?
 
den Pfadnamen in Anführungszeichen setzen.

Noch ein paar Ideen für weitere Entwicklung:

- Möglichkeit, dass sich das Proggi in die Menüleiste oben rechts einistet (möglich über com.apple.cocoa.StatusBar)
- nach Wahl die Icons anzeigt
- und Ordner, die mit .app enden (also Programme) bei Klick starten und nicht die unnützen Unterordner anzeigen
 
du könntest die leerzeichen parsen und mit \ escapen....

du kannst allerdings auch open direkt den pfad geben und musst das nicht über Finder.app machen...
 
mhm java nervt...

also wenn ich:

open "/Users/user/Desktop/Bla bla"

in der bash eingebe wird der ordner bla bla auch wunderbar im finder geöffnet. Wenn ich das ganze aber in java mit exec ausführe passiert nichts. Dort funktioniert es nur ohne anführungszeichen...

sieht so aus:
Code:
String exec = "open \""+this.path.getAbsolutePath()+"/\"";
		try {
			Runtime.getRuntime().exec(exec);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(exec);


das mit der menuleiste würde ich gern machen aber ich weis nicht ob das mit swing geht.

Cocoa und objectiv c bin ich noch am lernen.

Das mit den Applikationen mache ich noch


thx für die tips
 
oder du schreibst:
Runtime.getRuntime().exec(new string[]{"open /System/Library/CoreServices/Finder.app/ ", this.path.getAbsolutePath()});
der von Sun inzwischen empfohlene Weg per String[].

PS: Mit Swing geht das nicht, der Weg über Cocoa ist aber sehr einfach:
NSStatusBar statusBar = NSStatusBar.systemStatusBar();
NSStatusItem statusItem = statusBar.statusItem(20f);
statusItem.setTitle("Foo & Bar");
statusItem.setMenu(menu); //definiert z.B. im IB
 
ybasket schrieb:
oder du schreibst:
Runtime.getRuntime().exec(new string[]{"open /System/Library/CoreServices/Finder.app/ ", this.path.getAbsolutePath()});
der von Sun inzwischen empfohlene Weg per String[].

PS: Mit Swing geht das nicht, der Weg über Cocoa ist aber sehr einfach:
NSStatusBar statusBar = NSStatusBar.systemStatusBar();
NSStatusItem statusItem = statusBar.statusItem(20f);
statusItem.setTitle("Foo & Bar");
statusItem.setMenu(menu); //definiert z.B. im IB
Juhu 1000 Dank, so funktioniert es :D

noch eine frage zu cocoa, wie funktioniert es da mit den events. Kann ich da auch zbs. addListenerXX machen oder ist das anders gelöst?

mfg, thx für eure hilfe

PS. die aktuelle version lade ich gleich hoch
 
es läuft ein bißchen anders, du definierst ein Object als Delegate eines anderen, dann werden spezielle Methoden aufgerufen, falls etwas passiert. Oder du machst per nib im IB, da geht es viel leichter. Guck einfach mal unter http://developer.apple.com nach Sample Code für Cocoa, die Objective-C Methoden existieren (fast) alle gleichnamig unter Java.
 
Zurück
Oben Unten