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