source: trunk/dports/java/jabref/files/JabRefFrame.java.diff @ 101150

Last change on this file since 101150 was 101150, checked in by nicos@…, 8 years ago

jabref: update to 2.9.1, adding patches to use non-deprecated Java-OSX interface

File size: 3.6 KB
  • src/java/net/sf/jabref/JabRefFrame.java

    old new  
    610610            sidePaneManager.show("search");
    611611    }
    612612
    613 
     613    // The OSXAdapter calls this method when a ".bib" file has been double-clicked from the Finder.
     614    public void openAction(String filePath) {
     615                File file = new File(filePath);
     616
     617                // Check if the file is already open.
     618                for (int i=0; i<this.getTabbedPane().getTabCount(); i++) {
     619                                BasePanel bp = this.baseAt(i);
     620                                if ((bp.getFile() != null) && bp.getFile().equals(file)) {
     621                                                //The file is already opened, so just raising its tab.
     622                                                this.getTabbedPane().setSelectedComponent(bp);
     623                                                return;
     624                                        }
     625                        }
     626
     627                if (file.exists()) {
     628                                // Run the actual open in a thread to prevent the program
     629                                // locking until the file is loaded.
     630                                final File theFile = new File(filePath);
     631                                (new Thread() {
     632                                                public void run() {
     633                                                                open.openIt(theFile, true);
     634                                                        }
     635                                        }).start();
     636                        }
     637        }
     638   
    614639AboutAction aboutAction = new AboutAction();
    615640  class AboutAction
    616641      extends AbstractAction {
     
    815840  private void macOSXRegistration() {
    816841    if (Globals.osName.equals(Globals.MAC)) {
    817842      try {
    818         Class<?> osxAdapter = Class.forName("osxadapter.OSXAdapter");
    819 
    820         Class<?>[] defArgs = {
    821             JabRefFrame.class};
    822         Method registerMethod = osxAdapter.getDeclaredMethod(
    823             "registerMacOSXApplication", defArgs);
    824         if (registerMethod != null) {
    825           Object[] args = {
    826               this};
    827           registerMethod.invoke(osxAdapter, args);
    828         }
    829         // This is slightly gross.  to reflectively access methods with boolean args,
    830         // use "boolean.class", then pass a Boolean object in as the arg, which apparently
    831 
    832         defArgs[0] = boolean.class;
    833         Method prefsEnableMethod = osxAdapter.getDeclaredMethod("enablePrefs",
    834             defArgs);
    835         if (prefsEnableMethod != null) {
    836           Object args[] = {
    837               Boolean.TRUE};
    838           prefsEnableMethod.invoke(osxAdapter, args);
    839         }
     843                  Class<?> osxAdapter = Class.forName("osxadapter.OSXAdapter");
     844                 
     845                  Class<?>[] defArgs = {Object.class, Method.class};
     846                  Class<?> thisClass = JabRefFrame.class;
     847                  Method registerMethod = osxAdapter.getDeclaredMethod("setAboutHandler", defArgs);
     848                  if (registerMethod != null) {
     849                          Object[] args = {this, thisClass.getDeclaredMethod("about", (Class[])null)};
     850                          registerMethod.invoke(osxAdapter, args);
     851                  }
     852                  registerMethod = osxAdapter.getDeclaredMethod("setPreferencesHandler", defArgs);
     853                  if (registerMethod != null) {
     854                          Object[] args = {this, thisClass.getDeclaredMethod("preferences", (Class[])null)};
     855                          registerMethod.invoke(osxAdapter, args);
     856                  }
     857                  registerMethod = osxAdapter.getDeclaredMethod("setQuitHandler", defArgs);
     858                  if (registerMethod != null) {
     859                          Object[] args = {this, thisClass.getDeclaredMethod("quit", (Class[])null)};
     860                          registerMethod.invoke(osxAdapter, args);
     861                  }
     862                  registerMethod = osxAdapter.getDeclaredMethod("setFileHandler", defArgs);
     863                  if (registerMethod != null) {
     864                          Object[] args = {this, thisClass.getDeclaredMethod("openAction", new Class[] { String.class })};
     865                          registerMethod.invoke(osxAdapter, args);
     866                  }
    840867      }
    841868      catch (NoClassDefFoundError e) {
    842869        // This will be thrown first if the OSXAdapter is loaded on a system without the EAWT
Note: See TracBrowser for help on using the repository browser.