Java源码示例:ij.gui.YesNoCancelDialog

示例1
/**
 * This method is called when the plugin is loaded. See
 * {@link ij.plugin.PlugIn#run(java.lang.String)} Prompts user for a new
 * snippet that will be saved in {@code BAR/My_Routines/}
 *
 * @param arg
 *            ignored (Otherwise specified in plugins.config).
 */
@Override
public void run(final String arg) {
	Utils.shiftClickWarning();
	if (new GuiUtils().getFileCount(Utils.getLibDir()) == 0) {
		final YesNoCancelDialog query = new YesNoCancelDialog(null, "Install lib Files?",
				"Some of the code generated by this plugin assumes the adoption\n"
						+ "of centralized lib files, but none seem to exist in your local directory\n" + "("
						+ Utils.getLibDir() + ")\nWould you like to install them now?");
		if (query.cancelPressed()) {
			return;
		} else if (query.yesPressed()) {
			final Context context = (Context) IJ.runPlugIn("org.scijava.Context", "");
			final CommandService commandService = context.getService(CommandService.class);
			commandService.run(Installer.class, true);
			return;
		}
	}
	if (showDialog()) {
		if (sContents.length()>0)
			saveAndOpenSnippet();
		else
			IJ.showStatus(sFilename +" was empty. No file was saved...");
	}

}
 
示例2
private boolean upgradePatchesTable() throws Exception {
	Statement st = connection.createStatement();
	ResultSet r = st.executeQuery("SELECT column_name FROM information_schema.columns WHERE table_name='ab_patches' AND column_name='min'");
	if (!r.next()) {
		YesNoCancelDialog yn = new YesNoCancelDialog(IJ.getInstance(), "Upgrade", "Need to upgrade the table ab_patches.\nThe columns 'min' and 'max' will be added.\nProceed?");
		if (!yn.yesPressed()) {
			r.close();
			return false;
		}
		st.executeUpdate("ALTER TABLE ab_patches ADD min DOUBLE PRECISION");
		st.executeUpdate("ALTER TABLE ab_patches ALTER COLUMN min SET DEFAULT -1");
		st.executeUpdate("ALTER TABLE ab_patches ADD max DOUBLE PRECISION");
		st.executeUpdate("ALTER TABLE ab_patches ALTER COLUMN max SET DEFAULT -1");
	}
	r.close();
	return true;
}
 
示例3
private static boolean check(final JFrame frame, final List<FilterWrapper> wrappers) {
	if (!wrappers.isEmpty()) {
		final String s = sanityCheck(wrappers);
		return 0 == s.length()
				|| new YesNoCancelDialog(frame, "WARNING", s + "\nContinue?").yesPressed();
	}
	return true;
}
 
示例4
static public final boolean check(final String msg) {
	try { return new TaskOnEDT<Boolean>(new Callable<Boolean>() { @Override
	public Boolean call() {
	final YesNoCancelDialog dialog = new YesNoCancelDialog(IJ.getInstance(), "Execute?", msg);
	if (dialog.yesPressed()) {
		return true;
	}
	return false;
	}}).get(); } catch (final Throwable t) { IJError.print(t); return false; }
}
 
示例5
/** Select a file from the file system, for saving purposes. Prompts for overwritting if the file exists, unless the ControlWindow.isGUIEnabled() returns false (i.e. there is no GUI). */
static public final File chooseFile(final String default_dir, final String name, final String extension) {
	try { return new TaskOnEDT<File>(new Callable<File>() { @Override
	public File call() {
	// using ImageJ's JFileChooser or internal FileDialog, according to user preferences.
	String name2 = null;
	if (null != name && null != extension) name2 = name + extension;
	else if (null != name) name2 = name;
	else if (null != extension) name2 = "untitled" + extension;
	if (null != default_dir) {
		OpenDialog.setDefaultDirectory(default_dir);
	}
	final SaveDialog sd = new SaveDialog("Save",
					OpenDialog.getDefaultDirectory(),
					name2,
					extension);

	final String filename = sd.getFileName();
	if (null == filename || filename.toLowerCase().startsWith("null")) return null;
	String dir = sd.getDirectory();
	if (IJ.isWindows()) dir = dir.replace('\\', '/');
	if (!dir.endsWith("/")) dir += "/";
	final File f = new File(dir + filename);
	if (f.exists() && ControlWindow.isGUIEnabled()) {
		final YesNoCancelDialog d = new YesNoCancelDialog(IJ.getInstance(), "Overwrite?", "File " + filename + " exists! Overwrite?");
		if (d.cancelPressed()) {
			return null;
		} else if (!d.yesPressed()) {
			return chooseFile(name, extension);
		}
		// else if yes pressed, overwrite.
	}
	return f;
	}}).get(); } catch (final Throwable t) { IJError.print(t); return null; }
}
 
示例6
private boolean upgradeLayerSetTable() throws Exception {
	final Statement st = connection.createStatement();
	ResultSet r = st.executeQuery("SELECT column_name FROM information_schema.columns WHERE table_name='ab_layer_sets' AND column_name='snapshots_enabled'");
	if (!r.next()) {
		YesNoCancelDialog yn = new YesNoCancelDialog(IJ.getInstance(), "Upgrade", "Need to upgrade table ab_layer_sets.\nThe column 'snapshots_enabled' will be added.\nProceed?");
		if (!yn.yesPressed()) {
			r.close();
			return false;
		}
		st.execute("ALTER TABLE ab_layer_sets ADD snapshots_enabled BOOLEAN");
		st.execute("ALTER TABLE ab_layer_sets ALTER COLUMN snapshots_enabled SET DEFAULT true");
	}
	r.close();
	return true;
}
 
示例7
private boolean upgradeDisplaysTable() throws Exception {
	ResultSet r = connection.prepareStatement("SELECT column_name FROM information_schema.columns WHERE table_name='ab_displays' AND column_name='scroll_step'").executeQuery();
	if (!r.next()) {
		YesNoCancelDialog yn = new YesNoCancelDialog(IJ.getInstance(), "Upgrade", "Need to upgrade table ab_displays.\nThe column 'scroll_step' will be added.\nProceed?");
		if (!yn.yesPressed()) {
			r.close();
			return false;
		}
		connection.prepareStatement("ALTER TABLE ab_displays ADD scroll_step INT").execute();
		connection.prepareStatement("ALTER TABLE ab_displays ALTER COLUMN scroll_step SET DEFAULT 1").execute();
		// in two rows, so that 7.4.* is still supported.
	}
	r.close();
	return true;
}
 
示例8
private boolean upgradeAreaListTable() throws Exception {
	ResultSet r = connection.createStatement().executeQuery("SELECT column_name FROM information_schema.columns WHERE table_name='ab_area_paths' AND column_name='fill_paint'");
	if (!r.next()) {
		YesNoCancelDialog yn = new YesNoCancelDialog(IJ.getInstance(), "Upgrade", "Need to upgrade table ab_area_paths.\nThe column 'fill_paint' will be added.\nProceed?");
		if (!yn.yesPressed()) {
			r.close();
			return false;
		}
		connection.createStatement().executeUpdate("ALTER TABLE ab_area_paths ADD fill_paint BOOLEAN");
		connection.createStatement().executeUpdate("ALTER TABLE ab_area_paths ALTER COLUMN fill_paint SET DEFAULT TRUE");
	}
	r.close();
	return true;
}
 
示例9
static public void exportSVG(ProjectThing thing, double z_scale) {
	StringBuffer data = new StringBuffer();
	data.append("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n")
	    .append("<svg\n")
	    .append("\txmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n")
	    .append("\txmlns:cc=\"http://web.resource.org/cc/\"\n")
	    .append("\txmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n")
	    .append("\txmlns:svg=\"http://www.w3.org/2000/svg\"\n")
	    .append("\txmlns=\"http://www.w3.org/2000/svg\"\n")
	    //.append("\twidth=\"1500\"\n")
	    //.append("\theight=\"1000\"\n")
	    .append("\tid=\"").append(thing.getProject().toString()).append("\">\n")
	;
	// traverse the tree at node 'thing'
	thing.exportSVG(data, z_scale, "\t");

	data.append("</svg>");

	// save the file
	final SaveDialog sd = new SaveDialog("Save .svg", OpenDialog.getDefaultDirectory(), "svg");
	String dir = sd.getDirectory();
	if (null == dir) return;
	if (IJ.isWindows()) dir = dir.replace('\\', '/');
	if (!dir.endsWith("/")) dir += "/";
	String file_name = sd.getFileName();
	String file_path = dir + file_name;
	File f = new File(file_path);
	if (f.exists()) {
		YesNoCancelDialog d = new YesNoCancelDialog(IJ.getInstance(), "Overwrite?", "File " + file_name + " exists! Overwrite?");
		if (!d.yesPressed()) {
			return;
		}
	}
	String contents = data.toString();
	try {
		DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f), data.length()));
		dos.writeBytes(contents);
		dos.flush();
	} catch (Exception e) {
		IJError.print(e);
		Utils.log("ERROR: Most likely did NOT save your file.");
	}
}
 
示例10
/** Used to upgrade old databases. */
private boolean upgradeProjectsTable() throws Exception {
	// Upgrade database if necessary: set a version field, create the TemplateThing entries in the database for each project from its XML template file, and delete the xml_template column
	// Check columns: see if trakem2_version is there
	ResultSet r = connection.prepareStatement("SELECT column_name FROM information_schema.columns WHERE table_name='ab_projects' AND column_name='xml_template'").executeQuery();
	if (r.next()) {
		YesNoCancelDialog yn = new YesNoCancelDialog(IJ.getInstance(), "Upgrade", "Need to upgrade table projects.\nNo data will be lost, but reorganized.\nProceed?");
		if (!yn.yesPressed()) {
			return false;
		}
		// retrieve and parse XML template from each project
		ResultSet r1 = connection.prepareStatement("SELECT * FROM ab_projects").executeQuery();
		while (r1.next()) {
			long project_id = r1.getLong("id");
			// parse the XML file stored in the db and save the TemplateThing into the ab_things table
			InputStream xml_stream = null;
			try {
				String query = "SELECT xml_template FROM ab_projects WHERE id=" + project_id;
				ResultSet result = connection.prepareStatement(query).executeQuery();
				if (result.next()) {
					xml_stream = result.getBinaryStream("xml_template");
				}
				result.close();
			} catch (Exception e) {
				IJError.print(e);
				return false;
			}
			if (null == xml_stream) {
				Utils.showMessage("Failed to upgrade the database schema: XML template stream is null.");
				return false;
			}
			TemplateThing template_root = new TrakEM2MLParser(xml_stream).getTemplateRoot();
			if (null == template_root) {
				Utils.showMessage("Failed to upgrade the database schema: root TemplateThing is null.");
				return false;
			}
			Project project = new Project(project_id, r1.getString("title"));
			project.setTempLoader(this);
			template_root.addToDatabase(project);
		}
		r1.close();
		// remove the XML column
		connection.prepareStatement("ALTER TABLE ab_projects DROP xml_template").execute();
		// org.postgresql.util.PSQLException: ERROR: adding columns with defaults is not implemented in 7.4.* (only in 8.1.4+)
		// connection.prepareStatement("ALTER TABLE ab_projects ADD version text default '" + Utils.version + "'").execute();
		// so: workaround
		connection.prepareStatement("ALTER TABLE ab_projects ADD version TEXT").execute();
		connection.prepareStatement("ALTER TABLE ab_projects ALTER COLUMN version SET DEFAULT '" + Utils.version + "'").execute();
	}
	r.close();

	return true; // success!
}
 
示例11
/** Return the unuid_dir or null if none valid selected. */
private String obtainUNUIdFolder() {
	YesNoCancelDialog yn = ControlWindow.makeYesNoCancelDialog("Old .xml version!", "The loaded XML file does not contain an UNUId. Select a shared UNUId folder?\nShould look similar to: trakem2.12345678.12345678.12345678");
	if (!yn.yesPressed()) return null;
	DirectoryChooser dc = new DirectoryChooser("Select UNUId folder");
	String unuid_dir = dc.getDirectory();
	String unuid_dir_name = new File(unuid_dir).getName();
	Utils.log2("Selected UNUId folder: " + unuid_dir + "\n with name: " + unuid_dir_name);
	if (null != unuid_dir) {
		if (IJ.isWindows()) unuid_dir = unuid_dir.replace('\\', '/');
		if ( ! unuid_dir_name.startsWith("trakem2.")) {
			Utils.logAll("Invalid UNUId folder: must start with \"trakem2.\". Try again or cancel.");
			return obtainUNUIdFolder();
		} else {
			String[] nums = unuid_dir_name.split("\\.");
			if (nums.length != 4) {
				Utils.logAll("Invalid UNUId folder: needs trakem + 3 number blocks. Try again or cancel.");
				return obtainUNUIdFolder();
			}
			for (int i=1; i<nums.length; i++) {
				try {
					Long.parseLong(nums[i]);
				} catch (NumberFormatException nfe) {
					Utils.logAll("Invalid UNUId folder: at least one block is not a number. Try again or cancel.");
					return obtainUNUIdFolder();
				}
			}
			// ok, aceptamos pulpo
			String unuid = unuid_dir_name.substring(8); // remove prefix "trakem2."
			if (unuid.endsWith("/")) unuid = unuid.substring(0, unuid.length() -1);
			this.unuid = unuid;

			if (!unuid_dir.endsWith("/")) unuid_dir += "/";

			String dir_storage = new File(unuid_dir).getParent().replace('\\', '/');
			if (!dir_storage.endsWith("/")) dir_storage += "/";
			this.dir_storage = dir_storage;

			this.dir_mipmaps = unuid_dir + "trakem2.mipmaps/";

			return unuid_dir;
		}
	}
	return null;
}
 
示例12
/** If the srcRect is null, makes a flat 8-bit or RGB image of the entire layer. Otherwise just of the srcRect. Checks first for enough memory and frees some if feasible. */
public Bureaucrat makeFlatImage(final Layer[] layer, final Rectangle srcRect, final double scale, final int c_alphas, final int type, final boolean force_to_file, final String format, final boolean quality, final Color background) {
	if (null == layer || 0 == layer.length) {
		Utils.log2("makeFlatImage: null or empty list of layers to process.");
		return null;
	}
	final Worker worker = new Worker("making flat images") { @Override
       public void run() {
		try {
		//
		startedWorking();

		Rectangle srcRect_ = srcRect;
		if (null == srcRect_) srcRect_ = layer[0].getParent().get2DBounds();

		ImagePlus imp = null;
		String target_dir = null;
		boolean choose_dir = force_to_file;
		// if not saving to a file:
		if (!force_to_file) {
			final long size = (long)Math.ceil((srcRect_.width * scale) * (srcRect_.height * scale) * ( ImagePlus.GRAY8 == type ? 1 : 4 ) * layer.length);
			if (size > IJ.maxMemory() * 0.9) {
				final YesNoCancelDialog yn = new YesNoCancelDialog(IJ.getInstance(), "WARNING", "The resulting stack of flat images is too large to fit in memory.\nChoose a directory to save the slices as an image sequence?");
				if (yn.yesPressed()) {
					choose_dir = true;
				} else if (yn.cancelPressed()) {
					finishedWorking();
					return;
				} else {
					choose_dir = false; // your own risk
				}
			}
		}
		if (choose_dir) {
			final DirectoryChooser dc = new DirectoryChooser("Target directory");
			target_dir = dc.getDirectory();
			if (null == target_dir || target_dir.toLowerCase().startsWith("null")) {
				finishedWorking();
				return;
			}
			if (IJ.isWindows()) target_dir = target_dir.replace('\\', '/');
			if (!target_dir.endsWith("/")) target_dir += "/";
		}
		if (layer.length > 1) {
			// Get all slices
			ImageStack stack = null;
			Utils.showProgress(0);
			for (int i=0; i<layer.length; i++) {
				if (Thread.currentThread().isInterrupted()) return;

				/* free memory */
				releaseAll();

				Utils.showProgress(i / (float)layer.length);

				final ImagePlus slice = getFlatImage(layer[i], srcRect_, scale, c_alphas, type, Displayable.class, null, quality, background);
				if (null == slice) {
					Utils.log("Could not retrieve flat image for " + layer[i].toString());
					continue;
				}
				if (null != target_dir) {
					saveToPath(slice, target_dir, layer[i].getPrintableTitle(), ".tif");
				} else {
					if (null == stack) stack = new ImageStack(slice.getWidth(), slice.getHeight());
					stack.addSlice(layer[i].getProject().findLayerThing(layer[i]).toString(), slice.getProcessor());
				}
			}

			Utils.showProgress(1);

			if (null != stack) {
				imp = new ImagePlus("z=" + layer[0].getZ() + " to z=" + layer[layer.length-1].getZ(), stack);
				final Calibration impCalibration = layer[0].getParent().getCalibrationCopy();
				impCalibration.pixelWidth /= scale;
				impCalibration.pixelHeight /= scale;
				imp.setCalibration(impCalibration);
			}
		} else {
			imp = getFlatImage(layer[0], srcRect_, scale, c_alphas, type, Displayable.class, null, quality, background);
			if (null != target_dir) {
				saveToPath(imp, target_dir, layer[0].getPrintableTitle(), format);
				imp = null; // to prevent showing it
			}
		}
		if (null != imp) imp.show();
		} catch (final Throwable e) {
			IJError.print(e);
		}
		finishedWorking();
	}}; // I miss my lisp macros, you have no idea
	return Bureaucrat.createAndStart(worker, layer[0].getProject());
}
 
示例13
/** For the YesNoCancelDialog dialogs to be parented properly. */
static public YesNoCancelDialog makeYesNoCancelDialog(String title, String msg) {
	Frame f = (null == frame ? IJ.getInstance() : (java.awt.Frame)frame);
	return new YesNoCancelDialog(f, title, msg);
}