private void prepareTileStoreInfoPanel() { final GridBagConstraints gbc_mapSource = new GridBagConstraints(); gbc_mapSource.insets = new Insets(5, 10, 5, 10); gbc_mapSource.anchor = GridBagConstraints.WEST; final GridBagConstraints gbc_mapTiles = new GridBagConstraints(); gbc_mapTiles.insets = gbc_mapSource.insets; gbc_mapTiles.anchor = GridBagConstraints.EAST; final GridBagConstraints gbc_eol = new GridBagConstraints(); gbc_eol.gridwidth = GridBagConstraints.REMAINDER; TileStore tileStore = TileStore.getInstance(); MapSourcesManager mapSourcesManager = MapSourcesManager.getInstance(); tileStoreInfoPanel.add(new JLabel("<html><b>Map source</b></html>"), gbc_mapSource); tileStoreInfoPanel.add(new JLabel("<html><b>Tiles</b></html>"), gbc_mapTiles); tileStoreInfoPanel.add(new JLabel("<html><b>Size</b></html>"), gbc_eol); ImageIcon trash = Utilities.loadResourceImageIcon("trash.png"); for (String name : tileStore.getAllStoreNames()) { String mapTileCountText = " ? "; String mapTileSizeText = " ? "; MapSource mapSource = mapSourcesManager.getSourceByName(name); final JLabel mapSourceNameLabel; if (mapSource != null) mapSourceNameLabel = new JLabel(name); else mapSourceNameLabel = new JLabel(name + " (unused)"); final JLabel mapTileCountLabel = new JLabel(mapTileCountText); final JLabel mapTileSizeLabel = new JLabel(mapTileSizeText); final JButton deleteButton = new JButton(trash); TileSourceInfoComponents info = new TileSourceInfoComponents(); info.name = name; info.countLabel = mapTileCountLabel; info.sizeLabel = mapTileSizeLabel; tileStoreInfoList.add(info); deleteButton.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); deleteButton.setToolTipText("Delete all stored " + name + " tiles."); deleteButton.addActionListener(new ClearTileCacheAction(name)); tileStoreInfoPanel.add(mapSourceNameLabel, gbc_mapSource); tileStoreInfoPanel.add(mapTileCountLabel, gbc_mapTiles); tileStoreInfoPanel.add(mapTileSizeLabel, gbc_mapTiles); tileStoreInfoPanel.add(deleteButton, gbc_eol); } JSeparator hr = new JSeparator(JSeparator.HORIZONTAL); hr.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED)); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.fill = GridBagConstraints.HORIZONTAL; tileStoreInfoPanel.add(hr, gbc); JLabel totalMapLabel = new JLabel("<html><b>Total</b></html>"); totalTileCountLabel = new JLabel("<html><b>??</b></html>"); totalTileSizeLabel = new JLabel("<html><b>??</b></html>"); tileStoreInfoPanel.add(totalMapLabel, gbc_mapSource); tileStoreInfoPanel.add(totalTileCountLabel, gbc_mapTiles); tileStoreInfoPanel.add(totalTileSizeLabel, gbc_mapTiles); }
/** * @param updateStoreName name of the tile store to update or <code>null</code> in case of all * tile stores to be updated */ private void updateTileStoreInfoPanel(String updateStoreName) { try { TileStore tileStore = TileStore.getInstance(); long totalTileCount = 0; long totalTileSize = 0; for (final TileSourceInfoComponents info : tileStoreInfoList) { String storeName = info.name; Utilities.checkForInterruption(); int count; long size; if (updateStoreName == null || info.name.equals(updateStoreName)) { TileStoreInfo tsi = tileStore.getStoreInfo(storeName); count = tsi.getTileCount(); size = tsi.getStoreSize(); info.count = count; info.size = size; final String mapTileCountText = (count < 0) ? "??" : Integer.toString(count); final String mapTileSizeText = Utilities.formatBytes(size); SwingUtilities.invokeLater( new Runnable() { public void run() { info.countLabel.setText("<html><b>" + mapTileCountText + "</b></html>"); info.sizeLabel.setText("<html><b>" + mapTileSizeText + "</b></html>"); } }); } else { count = info.count; size = info.size; } totalTileCount += count; totalTileSize += size; } final String totalTileCountText = "<html><b>" + Long.toString(totalTileCount) + "</b></html>"; final String totalTileSizeText = "<html><b>" + Utilities.formatBytes(totalTileSize) + "</b></html>"; SwingUtilities.invokeLater( new Runnable() { public void run() { totalTileCountLabel.setText(totalTileCountText); totalTileSizeLabel.setText(totalTileSizeText); } }); } catch (InterruptedException e) { SettingsGUI.log.debug("Tile store information retrieval was canceled"); } }