use of net.parostroj.timetable.model.TimetableImage in project grafikon by jub77.
the class LSImage method createTimetableImage.
public TimetableImage createTimetableImage(TrainDiagram diagram) {
String newId = this.id != null ? this.id : IdGenerator.getInstance().getId();
TimetableImage image = diagram.getPartFactory().createImage(newId, filename, imageWidth, imageHeight);
return image;
}
use of net.parostroj.timetable.model.TimetableImage in project grafikon by jub77.
the class EditImagesDialog method deleteButtonActionPerformed.
private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
TimetableImage selected = (TimetableImage) ((Wrapper<?>) imagesList.getSelectedValue()).getElement();
diagram.getImages().remove(selected);
listModel.removeIndex(imagesList.getSelectedIndex());
// remove temp file
if (!selected.getImageFile().delete()) {
log.debug("Cannot remove temporary file: {}", selected.getImageFile().getPath());
}
}
use of net.parostroj.timetable.model.TimetableImage in project grafikon by jub77.
the class LoadSaveImages method loadTimetableImages.
/**
* loads images for timetable.
*
* @param diagram train diagram
* @param zipFile zip file
* @throws java.io.IOException
*/
public void loadTimetableImages(TrainDiagram diagram, ZipFile zipFile) throws IOException {
for (TimetableImage image : diagram.getImages()) {
ZipEntry entry = zipFile.getEntry("images/" + image.getFilename());
if (entry != null) {
File tempFile = File.createTempFile("gt_", ".temp");
InputStream is = zipFile.getInputStream(entry);
ReadableByteChannel ic = Channels.newChannel(is);
try (FileOutputStream os = new FileOutputStream(tempFile)) {
FileChannel oc = os.getChannel();
oc.transferFrom(ic, 0, entry.getSize());
}
image.setImageFile(tempFile);
tempFile.deleteOnExit();
}
}
}
use of net.parostroj.timetable.model.TimetableImage in project grafikon by jub77.
the class LoadSaveImages method saveTimetableImages.
/**
* saves images for timetable.
*
* @param diagram train diagram
* @param os zip output stream
* @throws java.io.IOException
*/
public void saveTimetableImages(TrainDiagram diagram, ZipOutputStream os) throws IOException {
for (TimetableImage image : diagram.getImages()) {
// copy image to zip
ZipEntry entry = new ZipEntry("images/" + image.getFilename());
if (image.getImageFile() == null)
// skip images without image file
continue;
File imageFile = image.getImageFile();
entry.setSize(imageFile.length());
os.putNextEntry(entry);
WritableByteChannel oc = Channels.newChannel(os);
try (FileInputStream is = new FileInputStream(imageFile)) {
FileChannel ic = is.getChannel();
ic.transferTo(0, ic.size(), oc);
}
}
}
use of net.parostroj.timetable.model.TimetableImage in project grafikon by jub77.
the class FileLoadSaveImpl method save.
@Override
public void save(TrainDiagram diagram, ZipOutputStream zipOutput) throws LSException {
try {
// save metadata
zipOutput.putNextEntry(new ZipEntry(METADATA));
this.createMetadata(METADATA_KEY_MODEL_VERSION).store(zipOutput, null);
FileLoadSaveAttachments attachments = new FileLoadSaveAttachments(DATA_ATTACHMENTS);
// increase save version (increment by one)
diagram.setSaveVersion(diagram.getSaveVersion() + 1);
// update save timestamp
diagram.setSaveTimestamp(new Date());
// save train diagram
this.save(zipOutput, DATA_TRAIN_DIAGRAM, new LSTrainDiagram(diagram));
// save net
this.save(zipOutput, DATA_NET, new LSNet(diagram.getNet()));
int cnt = 0;
// save train type categories
for (TrainTypeCategory category : diagram.getTrainTypeCategories()) {
this.save(zipOutput, this.createEntryName(DATA_TRAIN_TYPE_CATEGORIES, "xml", cnt++), new LSTrainTypeCategory(category));
}
cnt = 0;
// save routes
for (Route route : diagram.getRoutes()) {
this.save(zipOutput, this.createEntryName(DATA_ROUTES, "xml", cnt++), new LSRoute(route));
}
cnt = 0;
// save train types
for (TrainType trainType : diagram.getTrainTypes()) {
this.save(zipOutput, this.createEntryName(DATA_TRAIN_TYPES, "xml", cnt++), new LSTrainType(trainType));
}
cnt = 0;
// save trains
for (Train train : diagram.getTrains()) {
this.save(zipOutput, this.createEntryName(DATA_TRAINS, "xml", cnt++), new LSTrain(train));
}
cnt = 0;
// save engine classes
for (EngineClass engineClass : diagram.getEngineClasses()) {
this.save(zipOutput, this.createEntryName(DATA_ENGINE_CLASSES, "xml", cnt++), new LSEngineClass(engineClass));
}
cnt = 0;
// save text items
for (TextItem item : diagram.getTextItems()) {
this.save(zipOutput, this.createEntryName(DATA_TEXT_ITEMS, "xml", cnt++), new LSTextItem(item));
}
cnt = 0;
// save output templates
for (OutputTemplate template : diagram.getOutputTemplates()) {
LSOutputTemplate lsOutputTemplate = Boolean.TRUE.equals(properties.get("inline.output.template.attachments")) ? new LSOutputTemplate(template) : new LSOutputTemplate(template, attachments);
this.save(zipOutput, this.createEntryName(DATA_OUTPUT_TEMPLATES, "xml", cnt++), lsOutputTemplate);
}
cnt = 0;
// save diagram change sets
for (String version : diagram.getChangesTracker().getVersions()) {
DiagramChangeSet set = diagram.getChangesTracker().getChangeSet(version);
if (!set.getChanges().isEmpty())
this.save(zipOutput, this.createEntryName(DATA_CHANGES, "xml", cnt++), new LSDiagramChangeSet(set));
}
cnt = 0;
// save trains cycles
for (TrainsCycle cycle : diagram.getCycles()) {
this.save(zipOutput, this.createEntryName(DATA_TRAINS_CYCLES, "xml", cnt++), new LSTrainsCycle(cycle));
}
cnt = 0;
// save outputs
for (Output output : diagram.getOutputs()) {
this.save(zipOutput, this.createEntryName(DATA_OUTPUTS, "xml", cnt++), new LSOutput(output));
}
// save images
cnt = 0;
FileLoadSaveImages saveImages = new FileLoadSaveImages(DATA_IMAGES);
for (TimetableImage image : diagram.getImages()) {
this.save(zipOutput, createEntryName(DATA_IMAGES, "xml", cnt++), new LSImage(image));
saveImages.saveTimetableImage(image, zipOutput);
}
// save attachments
attachments.save(zipOutput);
// save freight net
this.save(zipOutput, FREIGHT_NET, new LSFreightNet(diagram.getFreightNet()));
} catch (IOException ex) {
throw new LSException(ex);
}
}
Aggregations