package bluej;
import java.io.File;
import bluej.pkgmgr.PkgMgrFrame;
import bluej.pkgmgr.Project;
import bluej.pkgmgr.target.ClassTarget;
import bluej.pkgmgr.target.Target;
import bluej.utility.Debug;
import javafx.stage.Stage;
import threadchecker.OnThread;
import threadchecker.Tag;
| Gui handler for BlueJ
|
| @author Davin McCall
|
public class BlueJGuiHandler
implements GuiHandler{
private static final int FIRST_X_LOCATION = 20;
private static final int FIRST_Y_LOCATION = 20;
@Override
public boolean tryOpen(File path, boolean displayError)
{
return PkgMgrFrame.doOpen(path, null);
}
@Override
public void handleAbout()
{
PkgMgrFrame.handleAbout();
}
@Override
public void handlePreferences()
{
PkgMgrFrame.handlePreferences();
}
@Override
public void handleQuit()
{
PkgMgrFrame.handleQuit();
}
@Override
public Stage initialOpenComplete(boolean projectOpen)
{
if (! projectOpen)
{
PkgMgrFrame frame = PkgMgrFrame.createFrame();
frame.getFXWindow().setX(FIRST_X_LOCATION);
frame.getFXWindow().setY(FIRST_Y_LOCATION);
frame.setVisible(true);
return frame.getFXWindow();
}
else
{
String targetName = Config.getPropString("bluej.class.open", null);
if (targetName != null && !targetName.equals(""))
{
boolean foundTarget = false;
for (Project proj : Project.getProjects())
{
Target tgt = proj.getTarget(targetName);
if (tgt != null && tgt instanceof ClassTarget)
{
((ClassTarget)tgt).open();
foundTarget = true;
}
}
if (!foundTarget)
{
Debug.message("Did not find target class in opened project: \"" + targetName + "\"");
}
}
return PkgMgrFrame.getMostRecent().getFXWindow();
}
}
@Override
public void doExitCleanup()
{
PkgMgrFrame[] pkgFrames = PkgMgrFrame.getAllFrames();
handleOrphanPackages(pkgFrames);
int i = pkgFrames.length - 1;
while (i >= 0)
{
PkgMgrFrame aFrame = pkgFrames[i--];
aFrame.doSave();
aFrame.closePackage();
PkgMgrFrame.closeFrame(aFrame);
}
}
| Save the list of open packages to the config, so that they can be re-opened when BlueJ is
| next started.
|
@OnThread(Tag.FXPlatform)
private static void handleOrphanPackages(PkgMgrFrame[] openFrames)
{
if (Main.hadOrphanPackages())
{
removeOrphanPackageList();
}
for (int i = 0; i < openFrames.length; i++)
{
PkgMgrFrame aFrame = openFrames[i];
if (!aFrame.isEmptyFrame())
{
Config.putPropString(Config.BLUEJ_OPENPACKAGE + (i + 1), aFrame.getPackage().getPath().toString());
}
}
}
| Remove previously listed orphan packages from bluej properties.
|
private static void removeOrphanPackageList()
{
String exists = "";
for (int i = 1; exists != null; i++)
{
exists = Config.removeProperty(Config.BLUEJ_OPENPACKAGE + i);
}
}
}
top,
use,
map,
class BlueJGuiHandler
. tryOpen
. handleAbout
. handlePreferences
. handleQuit
. initialOpenComplete
. doExitCleanup
. handleOrphanPackages
. removeOrphanPackageList
169 neLoCode
+ 5 LoComm