kyle napisał(a)
... jak zrobić żeby można było upuścić jakiś plik w okienku aplikacji (w ogóle w okienku, lub na jakiś konkretny element), ponieważ nie chcę robić FileChoosera, tylko właśnie drag n drop, czyli przeciągam sobie plik do aplikacji i jest automatycznie wysyłany.
Do tego powinno wystarczyc Ci w zupelnosci java.awt.dnd. (i ew. java.awt.datatransfer.). Na sieci powinno byc pare przykladow.
kyle napisał(a)
- w wersji na macu, to samo, ale żeby aplikacja "łapała" plik po przeciągnięciu na ikonę w Docku?
Wtedy mógłbym zrobić coś stylu: przeciągam plik na ikonkę w docku, aplikacja się uruchamia, wysyła go, kopiuje link do schowka i zamyka.
Tutaj bedzie troche zabawy (chociaz praktycznie i tak mniej niz z powyzszym). A wiec, Apple dostarcza pakiet "Apple Java Extensions", ktory odrobine rozszerza mozliwosci aplikacji Java. Przyklad:
package my.mac.application;
import com.apple.eawt.Application;
import com.apple.eawt.OpenFilesHandler;
import com.apple.eawt.AppEvent.OpenFilesEvent;
public class DockDnD {
public DockDnD() {
Application app = Application.getApplication();
app.setOpenFileHandler(new OpenFilesHandler() {
@Override
public void openFiles(OpenFilesEvent event) {
JOptionPane.showMessageDialog(null,
"Filename list: " + event.getFiles(),
"Selected file",
JOptionPane.INFORMATION_MESSAGE);
}
});
}
}
I wszystko fajnie, gdyby nie to, ze w dokumentacji do metody Application.setOpenFileHandler(OpenFilesHandler) jest napisane: "... notifications are only sent if the Java app is a bundled application, with a CFBundleDocumentTypes array present in it's Info.plist". Do stworzenia *.app mozesz uzyc ANT'owego taska, JarBundler, np.:
<target name="do-bundle" depends="jar" description="Create Mac application bundle from JAR">
<mkdir dir="release"/>
<jarbundler dir="release"
name="DockDnD"
mainclass="my.mac.application.DockDnD"
jar="${my-dnd.jar}">
<!-- creates CFBundleDocumentTypes entries in Plist.info -->
<documenttype name="All document types" ostypes="****" role="Viewer"/>
</jarbundler>
</target>
Odsylam do dokumentacji "Apple Java Extensions API" i JarBundler po szczegoly.