private boolean unzip() {
		URL url = null;
		try {
			url = new URL(src);
		}
		catch (MalformedURLException e) {
			e.printStackTrace();
			return false;
		}
		if (EventQueue.isDispatchThread())
			page.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
		if (Zipper.sharedInstance().getProcessMonitor() == null) {
			ProcessMonitor m = new ProcessMonitor(JOptionPane.getFrameForComponent(page));
			m.getProgressBar().setMinimum(0);
			m.getProgressBar().setMaximum(100);
			m.getProgressBar().setPreferredSize(new Dimension(300, 20));
			Zipper.sharedInstance().setProcessMonitor(m);
		}
		String s = Modeler.getInternationalText("DownloadingAndUncompressing");
		Zipper.sharedInstance().getProcessMonitor().setTitle(
				"<html><body>" + (s != null ? s : "Downloading and uncompressing......") + "<br>" + src
						+ "</body></html>");
		Zipper.sharedInstance().getProcessMonitor().setLocationRelativeTo(JOptionPane.getFrameForComponent(page));
		URLConnection conn = ConnectionManager.getConnection(url);
		if (conn == null) {
			page.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
			return false;
		}
		InputStream is = null;
		try {
			is = conn.getInputStream();
		}
		catch (IOException e) {
			e.printStackTrace();
			page.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
			return false;
		}
		if (is instanceof ZipInputStream) {
			dirList = Zipper.sharedInstance().unzip((ZipInputStream) is, des, -1L);
		}
		else {
			dirList = Zipper.sharedInstance().unzip(new ZipInputStream(is), des, -1L);
		}
		return true;
	}