public void refresh(final Application app) {
		artists = app.getAllArtists();
		if (artistList.getSelectedIndex() != -1) {
			int select = albumList.getSelectedIndex();
			albums = artists.get(artistList.getSelectedIndex()).getAlbums();
			/**
			 * SetContent for AlbumList
			 */
			albumList.setModel(new AbstractListModel<String>() {
				private static final long serialVersionUID = 1L;

				public int getSize() {
					return albums.size();
				}

				public String getElementAt(int index) {
					return albums.get(index).getTitle();
				}
			});
			albumList.setSelectedIndex(select);
		}
		if (albumList.getSelectedIndex() != -1) {
			/**
			 * Set TrackTable Content
			 */
			tracks = albums.get(albumList.getSelectedIndex()).getTracks();
			DefaultTableModel model = new DefaultTableModel() {
				@Override
				public boolean isCellEditable(int row, int column) {
					return false;
				}
			};
			model.addColumn("Tracknr.");
			model.addColumn("Title");
			model.addColumn("Length");
			for (int i = 0; i < tracks.size(); i++) {
				model.addRow(new Object[] { tracks.get(i).getTracknr(), tracks.get(i).getTitle(), tracks.get(i).getLength() });
			}
			tracklistTable.setModel(model);
			tracklistTable.getColumn("Tracknr.").setPreferredWidth(tracklistTable.getWidth() / 8);
			tracklistTable.getColumn("Title").setPreferredWidth(tracklistTable.getWidth() / 4 * 3);
			tracklistTable.getColumn("Length").setPreferredWidth(tracklistTable.getWidth() / 8);
			tracklistTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
			tracklistTable.getParent().addComponentListener(new ComponentListener() {
				@Override
				public void componentResized(final ComponentEvent e) {

					tracklistTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

				}

				@Override
				public void componentHidden(ComponentEvent arg0) {
					// TODO Auto-generated method stub

				}

				@Override
				public void componentMoved(ComponentEvent arg0) {
					// TODO Auto-generated method stub

				}

				@Override
				public void componentShown(ComponentEvent arg0) {
					// TODO Auto-generated method stub

				}
			});

		}

		/**
		 * Set Content for ArtistList
		 */
		int select = artistList.getSelectedIndex();
		artistList.setModel(new AbstractListModel<String>() {
			private static final long serialVersionUID = 1L;

			public int getSize() {
				return artists.size();
			}

			public String getElementAt(int index) {
				return artists.get(index).getName();
			}
		});
		if(select !=-1){
			artistList.setSelectedIndex(select);
		}
		/**
		 * MouseClick Listener for ArtistList
		 */
		artistList.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent arg0) {
				albums = artists.get(artistList.getSelectedIndex()).getAlbums();
				/**
				 * SetContent for AlbumList
				 */
				albumList.setModel(new AbstractListModel<String>() {
					private static final long serialVersionUID = 1L;

					public int getSize() {
						return albums.size();
					}

					public String getElementAt(int index) {
						return albums.get(index).getTitle();
					}
				});
			}
		});
		/**
		 * MouseClickListener for AlbumList
		 */
		albumList.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent arg0) {
				/**
				 * Set Details Labels
				 */
				lblAlbumname.setText(albums.get(albumList.getSelectedIndex()).getTitle());
				lblArtist.setText("Artist: " + albums.get(albumList.getSelectedIndex()).getArtist());
				lblReleasedate.setText("Releasedate: " + albums.get(albumList.getSelectedIndex()).getReleaseDate());
				lblAlbumlength.setText("Albumlength: " + albums.get(albumList.getSelectedIndex()).getLength());
				lblGenre.setText("Genres: " + albums.get(albumList.getSelectedIndex()).getGenres());

				/**
				 * Set TrackTable Content
				 */
				tracks = albums.get(albumList.getSelectedIndex()).getTracks();
				DefaultTableModel model = new DefaultTableModel() {
					@Override
					public boolean isCellEditable(int row, int column) {
						return false;
					}
				};
				model.addColumn("Tracknr.");
				model.addColumn("Title");
				model.addColumn("Length");
				for (int i = 0; i < tracks.size(); i++) {
					model.addRow(new Object[] { tracks.get(i).getTracknr(), tracks.get(i).getTitle(), tracks.get(i).getLength() });
				}
				tracklistTable.setModel(model);
				tracklistTable.getColumn("Tracknr.").setPreferredWidth(tracklistTable.getWidth() / 8);
				tracklistTable.getColumn("Title").setPreferredWidth(tracklistTable.getWidth() / 4 * 3);
				tracklistTable.getColumn("Length").setPreferredWidth(tracklistTable.getWidth() / 8);
				tracklistTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
				tracklistTable.getParent().addComponentListener(new ComponentListener() {
					@Override
					public void componentResized(final ComponentEvent e) {

						tracklistTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

					}

					@Override
					public void componentHidden(ComponentEvent arg0) {
						// TODO Auto-generated method stub

					}

					@Override
					public void componentMoved(ComponentEvent arg0) {
						// TODO Auto-generated method stub

					}

					@Override
					public void componentShown(ComponentEvent arg0) {
						// TODO Auto-generated method stub

					}
				});

			}
		});

	}