public void setProgressBar(JProgressBar progressBar) { if (progressBar == null) { removeMouseListener(this); } else { if (!Arrays.asList(this.getMouseListeners()).contains(this)) { addMouseListener(this); } } this.progressBar = progressBar; }
@Override public Transferable createTransferable(JComponent comp) { if (comp instanceof SeriesThumbnail) { MediaSeries<?> t = ((SeriesThumbnail) comp).getSeries(); if (t instanceof Series) { return t; } } return null; }
public void reBuildThumbnail(MediaSeries.MEDIA_POSITION position) { reBuildThumbnail(null, position); }
public synchronized void setThumbnailSize(int thumbnailSize) { boolean update = this.thumbnailSize != thumbnailSize; if (update) { Object media = series.getMedia(mediaPosition, null, null); this.thumbnailSize = thumbnailSize; removeImageFromCache(); buildThumbnail((MediaElement) media, series.getTagValue(TagW.ExplorerModel) != null, null); } }
@Override public void focusGained(FocusEvent e) { if (!e.isTemporary()) { JPanel container = getScrollPane(); if (container != null) { Rectangle bound = this.getBounds(); Point p1 = SwingUtilities.convertPoint(this, this.getX(), this.getY(), container); bound.x = p1.x; bound.y = p1.y; container.scrollRectToVisible(bound); } SeriesImporter loader = series.getSeriesLoader(); if (loader != null) { loader.setPriority(); } } }
public static SeriesThumbnail createThumbnail(final Series series, final DicomModel dicomModel, final int thumbnailSize) { Callable<SeriesThumbnail> callable = () -> { final SeriesThumbnail thumb = new SeriesThumbnail(series, thumbnailSize); if (series.getSeriesLoader() instanceof LoadSeries) { // In case series is downloaded or canceled LoadSeries loader = (LoadSeries) series.getSeriesLoader(); thumb.setProgressBar(loader.isDone() ? null : loader.getProgressBar()); } thumb.registerListeners(); ThumbnailMouseAndKeyAdapter thumbAdapter = new ThumbnailMouseAndKeyAdapter(series, dicomModel, null); thumb.addMouseListener(thumbAdapter); thumb.addKeyListener(thumbAdapter); return thumb; }; FutureTask<SeriesThumbnail> future = new FutureTask<>(callable); GuiExecutor.instance().invokeAndWait(future); SeriesThumbnail result = null; try { result = future.get(); } catch (InterruptedException e) { LOGGER.warn("Building Series thumbnail task Interruption"); //$NON-NLS-1$ Thread.currentThread().interrupt(); } catch (ExecutionException e) { LOGGER.error("Building Series thumbnail task", e); //$NON-NLS-1$ } return result; }
thumbnail.setProgressBar(null); if (thumbnail.getThumbnailPath() == null || dicomSeries.getTagValue(TagW.DirectDownloadThumbnail) != null) { thumbnail.reBuildThumbnail(MediaSeries.MEDIA_POSITION.MIDDLE); } else { thumbnail.repaint();
@Override public void registerListeners() { super.registerListeners(); // Reactivate tooltip listener ToolTipManager.sharedInstance().registerComponent(this); if (dragSource != null) { dragSource.removeDragSourceListener(this); dragSource.removeDragSourceMotionListener(this); removeFocusListener(this); } addFocusListener(this); this.setFocusable(true); this.addMouseListener(this); dragSource = new DragSource(); dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY, this); dragSource.addDragSourceMotionListener(this); }
public synchronized void reBuildThumbnail(File file, MediaSeries.MEDIA_POSITION position) { MediaElement media = series.getMedia(position, null, null); // Handle special case for DICOM SR if (media == null) { List<MediaElement> specialElements = (List<MediaElement>) series.getTagValue(TagW.DicomSpecialElementList); if (specialElements != null && !specialElements.isEmpty()) { media = specialElements.get(0); } } if (file != null || media != null) { mediaPosition = position; if (thumbnailPath != null && thumbnailPath.getPath().startsWith(AppProperties.FILE_CACHE_DIR.getPath())) { FileUtil.delete(thumbnailPath); // delete old temp file } thumbnailPath = file; readable = true; /* * Do not remove the image from the cache after building the thumbnail when the series is associated to a * explorerModel (stream should be closed at least when closing the application or when free the cache). */ buildThumbnail(media, series.getTagValue(TagW.ExplorerModel) != null, null); revalidate(); repaint(); } }
@Override public void mouseReleased(MouseEvent e) { if (progressBar != null) { // To avoid concurrency issue JProgressBar bar = progressBar; if (bar.isVisible()) { Point p = e.getPoint(); p.translate(-(thumbnailSize - stopButton.width), -5); if (stopButton.contains(p)) { SeriesImporter loader = series.getSeriesLoader(); if (loader != null) { loader.stop(); } repaint(); return; } p.translate(3 * BUTTON_SIZE_HALF, 0); if (startButton.getBounds().contains(p)) { SeriesImporter loader = series.getSeriesLoader(); if (loader != null) { loader.resume(); } repaint(); } } } }
public void startDownloadImageReference(final WadoParameters wadoParameters) { if (!seriesInstanceList.isEmpty()) { // Sort the UIDs for building the thumbnail that is in the middle of the Series List<SopInstance> sopList = seriesInstanceList.getSortedList(); final SopInstance instance = sopList.get(sopList.size() / 2); GuiExecutor.instance().execute(() -> { SeriesThumbnail thumbnail = (SeriesThumbnail) dicomSeries.getTagValue(TagW.Thumbnail); if (thumbnail == null) { thumbnail = new SeriesThumbnail(dicomSeries, Thumbnail.DEFAULT_SIZE); } // In case series is downloaded or canceled thumbnail.setProgressBar(LoadSeries.this.isDone() ? null : progressBar); thumbnail.registerListeners(); addListenerToThumbnail(thumbnail, LoadSeries.this, dicomModel); dicomSeries.setTag(TagW.Thumbnail, thumbnail); dicomModel.firePropertyChange( new ObservableEvent(ObservableEvent.BasicAction.ADD, dicomModel, null, dicomSeries)); }); loadThumbnail(instance, wadoParameters); } }
@Override public void dragGestureRecognized(DragGestureEvent dge) { Component comp = dge.getComponent(); try { GhostGlassPane glassPane = AppProperties.glassPane; glassPane.setIcon(getIcon()); Point p = (Point) dge.getDragOrigin().clone(); dragPressed = new Point(p.x - 4, p.y - 4); SwingUtilities.convertPointToScreen(p, comp); drawGlassPane(p); glassPane.setVisible(true); dge.startDrag(null, series, this); } catch (Exception e) { LOGGER.error("Prepare to drag", e); //$NON-NLS-1$ } }
@Override public void dragMouseMoved(DragSourceDragEvent dsde) { drawGlassPane(dsde.getLocation()); }
t = DicomExplorer.createThumbnail(dicomSeries, dicomModel, Thumbnail.DEFAULT_SIZE); dicomSeries.setTag(TagW.Thumbnail, t); Optional.ofNullable(t).ifPresent(v -> v.repaint());
public void reBuildThumbnail() { reBuildThumbnail(null, mediaPosition); }
MediaSeries<MediaElement> series = t.getSeries();
t = DicomExplorer.createThumbnail(dicomSeries, dicomModel, Thumbnail.DEFAULT_SIZE); dicomSeries.setTag(TagW.Thumbnail, t); Optional.ofNullable(t).ifPresent(v -> v.repaint());
SeriesThumbnail thumbnail = (SeriesThumbnail) dicomSeries.getTagValue(TagW.Thumbnail); if (thumbnail != null) { thumbnail.reBuildThumbnail(finalfile, MediaSeries.MEDIA_POSITION.MIDDLE);
public void addSelectionAndnotify() { openPlugin = true; final ArrayList<SeriesThumbnail> thumbs = new ArrayList<>(dicomObjectsToLoad.length); for (Attributes dicom : dicomObjectsToLoad) { if (isCancelled()) { return; } try { DicomMediaIO loader = new DicomMediaIO(dicom); if (loader.isReadableDicom()) { // Issue: must handle adding image to viewer and building thumbnail (middle image) SeriesThumbnail t = buildDicomStructure(loader); if (t != null) { thumbs.add(t); } } } catch (URISyntaxException e) { LOGGER.debug("", e); //$NON-NLS-1$ } } for (final SeriesThumbnail t : thumbs) { MediaSeries<MediaElement> series = t.getSeries(); // Avoid to rebuild most of CR series thumbnail if (series != null && series.size(null) > 2) { GuiExecutor.instance().execute(t::reBuildThumbnail); } } }
SeriesThumbnail t = (SeriesThumbnail) series.getTagValue(TagW.Thumbnail); if (t != null) { t.reBuildThumbnail(MEDIA_POSITION.FIRST); SeriesThumbnail t = (SeriesThumbnail) series.getTagValue(TagW.Thumbnail); if (t != null) { t.reBuildThumbnail(MEDIA_POSITION.MIDDLE); SeriesThumbnail t = (SeriesThumbnail) series.getTagValue(TagW.Thumbnail); if (t != null) { t.reBuildThumbnail(MEDIA_POSITION.LAST);