use of org.gephi.utils.longtask.spi.LongTask in project gephi by gephi.
the class LongTaskExecutor method finished.
private synchronized void finished(RunningLongTask runningLongTask) {
if (cancelTimer != null) {
cancelTimer.cancel();
}
LongTask task = runningLongTask.task;
currentTask = null;
if (listener != null) {
listener.taskFinished(task);
}
}
use of org.gephi.utils.longtask.spi.LongTask in project gephi by gephi.
the class PDFExporter method execute.
@Override
public boolean execute() {
Progress.start(progress);
PreviewController controller = Lookup.getDefault().lookup(PreviewController.class);
controller.getModel(workspace).getProperties().putValue(PreviewProperty.VISIBILITY_RATIO, 1.0);
controller.refreshPreview(workspace);
PreviewProperties props = controller.getModel(workspace).getProperties();
Rectangle size = new Rectangle(pageSize);
if (landscape) {
size = new Rectangle(pageSize.rotate());
}
Color col = props.getColorValue(PreviewProperty.BACKGROUND_COLOR);
size.setBackgroundColor(new BaseColor(col.getRed(), col.getGreen(), col.getBlue()));
Document document = new Document(size);
PdfWriter pdfWriter = null;
try {
pdfWriter = PdfWriter.getInstance(document, stream);
pdfWriter.setPdfVersion(PdfWriter.PDF_VERSION_1_5);
pdfWriter.setFullCompression();
} catch (DocumentException ex) {
Exceptions.printStackTrace(ex);
}
document.open();
PdfContentByte cb = pdfWriter.getDirectContent();
cb.saveState();
props.putValue(PDFTarget.LANDSCAPE, landscape);
props.putValue(PDFTarget.PAGESIZE, size);
props.putValue(PDFTarget.MARGIN_TOP, new Float((float) marginTop));
props.putValue(PDFTarget.MARGIN_LEFT, new Float((float) marginLeft));
props.putValue(PDFTarget.MARGIN_BOTTOM, new Float((float) marginBottom));
props.putValue(PDFTarget.MARGIN_RIGHT, new Float((float) marginRight));
props.putValue(PDFTarget.PDF_CONTENT_BYTE, cb);
target = (PDFTarget) controller.getRenderTarget(RenderTarget.PDF_TARGET, workspace);
if (target instanceof LongTask) {
((LongTask) target).setProgressTicket(progress);
}
try {
controller.render(target, workspace);
} catch (Exception e) {
throw new RuntimeException(e);
}
cb.restoreState();
document.close();
Progress.finish(progress);
props.putValue(PDFTarget.PDF_CONTENT_BYTE, null);
props.putValue(PDFTarget.PAGESIZE, null);
return !cancel;
}
use of org.gephi.utils.longtask.spi.LongTask in project gephi by gephi.
the class DesktopImportControllerUI method importFile.
@Override
public void importFile(final Reader reader, String importerName) {
try {
final FileImporter importer = controller.getFileImporter(importerName);
if (importer == null) {
NotifyDescriptor.Message msg = new NotifyDescriptor.Message(NbBundle.getMessage(getClass(), "DesktopImportControllerUI.error_no_matching_file_importer"), NotifyDescriptor.WARNING_MESSAGE);
DialogDisplayer.getDefault().notify(msg);
return;
}
ImporterUI ui = controller.getUI(importer);
if (ui != null) {
FileImporter[] fi = (FileImporter[]) Array.newInstance(importer.getClass(), 1);
fi[0] = importer;
ui.setup(fi);
String title = NbBundle.getMessage(DesktopImportControllerUI.class, "DesktopImportControllerUI.file.ui.dialog.title", ui.getDisplayName());
JPanel panel = ui.getPanel();
final DialogDescriptor dd = new DialogDescriptor(panel, title);
if (panel instanceof ValidationPanel) {
ValidationPanel vp = (ValidationPanel) panel;
vp.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
dd.setValid(!((ValidationPanel) e.getSource()).isProblem());
}
});
}
Object result = DialogDisplayer.getDefault().notify(dd);
if (!result.equals(NotifyDescriptor.OK_OPTION)) {
ui.unsetup(false);
return;
}
ui.unsetup(true);
}
LongTask task = null;
if (importer instanceof LongTask) {
task = (LongTask) importer;
}
//Execute task
final String containerSource = NbBundle.getMessage(DesktopImportControllerUI.class, "DesktopImportControllerUI.streamSource", importerName);
String taskName = NbBundle.getMessage(DesktopImportControllerUI.class, "DesktopImportControllerUI.taskName", containerSource);
executor.execute(task, new Runnable() {
@Override
public void run() {
try {
Container container = controller.importFile(reader, importer);
if (container != null) {
container.setSource(containerSource);
finishImport(container);
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}, taskName, errorHandler);
} catch (Exception ex) {
Logger.getLogger("").log(Level.WARNING, "", ex);
}
}
use of org.gephi.utils.longtask.spi.LongTask in project gephi by gephi.
the class DesktopImportControllerUI method importFiles.
@Override
public void importFiles(FileObject[] fileObjects) {
try {
Map<ImporterUI, List<FileImporter>> importerUIs = new HashMap<>();
List<FileImporter> importers = new ArrayList<>();
for (FileObject fileObject : fileObjects) {
FileImporter importer = controller.getFileImporter(FileUtil.toFile(fileObject));
if (importer == null) {
NotifyDescriptor.Message msg = new NotifyDescriptor.Message(NbBundle.getMessage(getClass(), "DesktopImportControllerUI.error_no_matching_file_importer"), NotifyDescriptor.WARNING_MESSAGE);
DialogDisplayer.getDefault().notify(msg);
return;
}
importers.add(importer);
ImporterUI ui = controller.getUI(importer);
if (ui != null) {
List<FileImporter> l = importerUIs.get(ui);
if (l == null) {
l = new ArrayList<>();
importerUIs.put(ui, l);
}
l.add(importer);
}
//MRU
MostRecentFiles mostRecentFiles = Lookup.getDefault().lookup(MostRecentFiles.class);
mostRecentFiles.addFile(fileObject.getPath());
}
for (Map.Entry<ImporterUI, List<FileImporter>> entry : importerUIs.entrySet()) {
ImporterUI ui = entry.getKey();
String title = NbBundle.getMessage(DesktopImportControllerUI.class, "DesktopImportControllerUI.file.ui.dialog.title", ui.getDisplayName());
JPanel panel = ui.getPanel();
FileImporter[] fi = (FileImporter[]) entry.getValue().toArray((FileImporter[]) Array.newInstance(entry.getValue().get(0).getClass(), 0));
ui.setup(fi);
final DialogDescriptor dd = new DialogDescriptor(panel, title);
if (panel instanceof ValidationPanel) {
ValidationPanel vp = (ValidationPanel) panel;
vp.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
dd.setValid(!((ValidationPanel) e.getSource()).isProblem());
}
});
}
Object result = DialogDisplayer.getDefault().notify(dd);
if (!result.equals(NotifyDescriptor.OK_OPTION)) {
ui.unsetup(false);
return;
}
ui.unsetup(true);
}
final List<Container> result = new ArrayList<>();
for (int i = 0; i < importers.size(); i++) {
final FileImporter importer = importers.get(i);
FileObject fileObject = fileObjects[i];
LongTask task = null;
if (importer instanceof LongTask) {
task = (LongTask) importer;
}
//Execute task
fileObject = getArchivedFile(fileObject);
final String containerSource = fileObject.getNameExt();
final InputStream stream = fileObject.getInputStream();
String taskName = NbBundle.getMessage(DesktopImportControllerUI.class, "DesktopImportControllerUI.taskName", containerSource);
executor.execute(task, new Runnable() {
@Override
public void run() {
try {
Container container = controller.importFile(stream, importer);
if (container != null) {
container.setSource(containerSource);
result.add(container);
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}, taskName, errorHandler);
}
executor.execute(null, new Runnable() {
@Override
public void run() {
if (!result.isEmpty()) {
finishImport(result.toArray(new Container[0]));
}
}
});
} catch (Exception ex) {
Logger.getLogger("").log(Level.WARNING, "", ex);
}
}
use of org.gephi.utils.longtask.spi.LongTask in project gephi by gephi.
the class DesktopExportController method exportFile.
@Override
public void exportFile(final FileObject fileObject, final Exporter exporter) {
if (exporter == null) {
throw new RuntimeException(NbBundle.getMessage(getClass(), "error_no_matching_file_exporter"));
}
//Export Task
LongTask task = null;
if (exporter instanceof LongTask) {
task = (LongTask) exporter;
}
String taskmsg = NbBundle.getMessage(DesktopExportController.class, "DesktopExportController.exportTaskName", fileObject.getNameExt());
executor.execute(task, new Runnable() {
@Override
public void run() {
try {
controller.exportFile(FileUtil.toFile(fileObject), exporter);
StatusDisplayer.getDefault().setStatusText(NbBundle.getMessage(DesktopExportController.class, "DesktopExportController.status.exportSuccess", fileObject.getNameExt()));
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}, taskmsg, errorHandler);
}
Aggregations