소스 검색

This is the workaround for all Linux users who had the "freeze at SplashScreen" Symptom. Revert this when Netbeans fixed that. See #38

MeFisto94 9 년 전
부모
커밋
880b09fca1
2개의 변경된 파일41개의 추가작업 그리고 3개의 파일을 삭제
  1. 9 0
      jme3-core/nbproject/project.xml
  2. 32 3
      jme3-core/src/com/jme3/gde/core/Installer.java

+ 9 - 0
jme3-core/nbproject/project.xml

@@ -90,6 +90,15 @@
                         <specification-version>1.6.1</specification-version>
                     </run-dependency>
                 </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.core.startup</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <implementation-version/>
+                    </run-dependency>
+                </dependency>
                 <dependency>
                     <code-name-base>org.netbeans.libs.javacapi</code-name-base>
                     <build-prerequisite/>

+ 32 - 3
jme3-core/src/com/jme3/gde/core/Installer.java

@@ -32,15 +32,20 @@
 package com.jme3.gde.core;
 
 import com.jme3.gde.core.scene.SceneApplication;
+import java.awt.Component;
+import java.awt.Frame;
 import java.io.File;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.swing.JFileChooser;
 import javax.swing.JPopupMenu;
+import javax.swing.filechooser.FileSystemView;
 import org.openide.filesystems.FileChooserBuilder;
 import org.openide.modules.ModuleInstall;
 import org.openide.modules.Places;
 import org.openide.util.NbBundle;
 import org.openide.util.NbPreferences;
+import org.netbeans.core.startup.*;
 
 /**
  * Manages a module's lifecycle. Remember that an installer is optional and
@@ -74,19 +79,43 @@ public class Installer extends ModuleInstall {
         //select project folder
         String projectDir = NbPreferences.forModule(Installer.class).get("projects_path", null);
         if (projectDir == null) {
-            javax.swing.JFileChooser fr = new javax.swing.JFileChooser();
-            javax.swing.filechooser.FileSystemView fw = fr.getFileSystemView();
+            JFileChooser fr = new JFileChooser();
+            FileSystemView fw = fr.getFileSystemView();
             projectDir = fw.getDefaultDirectory().getAbsolutePath();
             FileChooserBuilder builder = new FileChooserBuilder(projectDir);
             builder.setApproveText("Set Project Folder");
             builder.setTitle("Please select folder for storing projects");
             builder.setDirectoriesOnly(true);
-            File file = builder.showOpenDialog();
+            
+            Splash s = Splash.getInstance();
+            
+            Component comp = s.getComponent();
+            while (!(comp instanceof Frame)) { // Loop through the Hierarchy until you have the parental Frame
+                if (comp.getParent() != null)
+                    comp = comp.getParent();
+                else { // No Frame found in Hiarchy
+                    comp = null;
+                    break;
+                }
+            }
+            
+            if (comp != null)
+                comp.setVisible(false);
+            else
+                s.setRunning(false); // Workaround from the Workaround.
+           
+            File file = builder.showOpenDialog(); //*/  chooser.getSelectedFile();
             if (file != null) {
                 projectDir = file.getAbsolutePath();
                 NbPreferences.forModule(Installer.class).put("projects_path", projectDir);
             }
+                
+            if (comp != null)
+                comp.setVisible(true);
+            else
+                s.setRunning(true); // Unfortunately this has no effect
         }
+        
         //netbeans.default_userdir_root
         logger.log(Level.INFO, "Set project dir {0}", projectDir);
         System.setProperty("netbeans.projects.dir", projectDir);