public synchronized void dirFetchingDone(RemoteDir dir, final DirListing dl) {
		if (dir.equals(this.currentRequestedDirectory)
				&& this.getState() != stateType.DONE) {
			// System.out.println("Fetched " + dir.getPath());
			//D.out("|-- BrowserWidget: dirFetchingDone for " + dir.getPath());

			// change state
			this.setNormalCursor();
			this.changeState(stateType.DONE);

			// was it successful?
			if (dl.getError() == null) {

				try {
					// switch model
					if (!SwingUtilities.isEventDispatchThread()) {
						//D.out("|-- Switching table model in Swing-Thread for "
						//		+ dir.getPath());
						SwingUtilities.invokeAndWait(new Runnable() {
							public void run() {
								table.setModel(new DirListingTableModel(dl));
							}
						});
						//D
						//		.out("|-- Done switching table model in Swing-Thread for "
						//				+ dir.getPath());
					} else {
						//D.out("|-- Switching table model here for "
						//		+ dir.getPath());
						table.setModel(new DirListingTableModel(dl));
						//D.out("|-- Done switching table model here for "
						//		+ dir.getPath());
					}

					TableColumn firstColumn = this.table.getColumnModel()
							.getColumn(0);
					firstColumn.setMinWidth((int) (IconChooser.getGuiIconWidth ()*1.3));
					firstColumn.setMaxWidth((int) (IconChooser.getGuiIconWidth ()*1.3));
					firstColumn.setPreferredWidth((int) (IconChooser.getGuiIconWidth ()*1.3));

					this.currentDirectory = dir;

					this.dirLabel.setText(URL.decode(dir.getPath()));
					errorSubPanel.setVisible(false);
				} catch (Exception e) {
					e.printStackTrace();
				}
			} else {
				this.errorLabel.setText(dl.getError() + " while fetching "
						+ URL.decode(dir.getPath()));
				errorSubPanel.setVisible(true);

			}

			if (this.currentDirectory == null) {
				this.download.setEnabled(false);
				this.up.setEnabled(false);
				this.index.setEnabled(true);
				this.reload.setEnabled(false);
				this.loadInBrowser.setEnabled(false);
				this.stop.setEnabled(false);
			} else {
				this.download.setEnabled(true);
				// only be able to go up when not in /.
				this.up.setEnabled(!this.currentDirectory.isRoot());

				// only be able to go to index when not in /.
				this.index.setEnabled(!this.currentDirectory.isRoot());

				// disable stop button and enable reload button
				this.reload.setEnabled(true);
				this.loadInBrowser.setEnabled(true);
				this.stop.setEnabled(false);
			}
		}
	}