FileBrowser

Diskutiere mit über: FileBrowser im Mac OS X Entwickler, Programmierer Forum

  1. Sojus

    Sojus Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    3
    Registriert seit:
    30.05.2006
    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?
     
  2. Sojus

    Sojus Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    3
    Registriert seit:
    30.05.2006
    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?
     
  3. ybasket

    ybasket MacUser Mitglied

    Beiträge:
    325
    Zustimmungen:
    3
    Registriert seit:
    17.01.2006
    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
     
  4. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.776
    Zustimmungen:
    3.629
    Registriert seit:
    23.11.2004
    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...
     
  5. Sojus

    Sojus Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    3
    Registriert seit:
    30.05.2006
    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
     
  6. ybasket

    ybasket MacUser Mitglied

    Beiträge:
    325
    Zustimmungen:
    3
    Registriert seit:
    17.01.2006
    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
     
  7. Sojus

    Sojus Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    3
    Registriert seit:
    30.05.2006
    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
     
  8. ybasket

    ybasket MacUser Mitglied

    Beiträge:
    325
    Zustimmungen:
    3
    Registriert seit:
    17.01.2006
    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.
     

Diese Seite empfehlen

Benutzerdefinierte Suche