Skip to content

Commit

Permalink
ref torakiki#4: added RestorableView interface to the SelectionTable.
Browse files Browse the repository at this point in the history
  • Loading branch information
torakiki committed Dec 10, 2014
1 parent 3beb73c commit 8daf731
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,14 @@

import static org.apache.commons.lang3.StringUtils.defaultString;
import static org.pdfsam.support.RequireUtils.require;

import java.util.Map;

import javafx.scene.layout.BorderPane;

import org.apache.commons.lang3.StringUtils;
import org.pdfsam.module.ModuleOwned;
import org.pdfsam.ui.workspace.RestorableView;
import org.sejda.model.parameter.base.TaskParameters;

/**
Expand All @@ -32,7 +36,7 @@
*
* @author Andrea Vacondio
*/
public class MultipleSelectionPane extends BorderPane implements ModuleOwned {
public class MultipleSelectionPane extends BorderPane implements ModuleOwned, RestorableView {

private String ownerModule = StringUtils.EMPTY;
private SelectionTable table;
Expand All @@ -57,4 +61,12 @@ protected SelectionTable table() {
return table;
}

public void saveStateTo(Map<String, String> data) {
table.saveStateTo(data);
}

public void restoreStateFrom(Map<String, String> data) {
table.restoreStateFrom(data);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,12 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.function.Consumer;
import java.util.stream.IntStream;
import java.util.stream.Stream;

import javafx.application.Platform;
Expand Down Expand Up @@ -66,6 +69,7 @@
import org.pdfsam.ui.selection.multiple.move.MoveSelectedEvent;
import org.pdfsam.ui.selection.multiple.move.MoveType;
import org.pdfsam.ui.selection.multiple.move.SelectionAndFocus;
import org.pdfsam.ui.workspace.RestorableView;
import org.sejda.eventstudio.annotation.EventListener;
import org.sejda.eventstudio.annotation.EventStation;
import org.slf4j.Logger;
Expand All @@ -80,7 +84,7 @@
* @author Andrea Vacondio
*
*/
public class SelectionTable extends TableView<SelectionTableRowData> implements ModuleOwned {
public class SelectionTable extends TableView<SelectionTableRowData> implements ModuleOwned, RestorableView {
private static final Logger LOG = LoggerFactory.getLogger(SelectionTable.class);
private String ownerModule = StringUtils.EMPTY;
private Label placeHolder = new Label(DefaultI18nContext.getInstance().i18n("Drag and drop PDF files here"));
Expand Down Expand Up @@ -324,4 +328,35 @@ public void showPasswordFieldPopup(ShowPasswordFieldPopupRequest request) {
}
}
}

public void saveStateTo(Map<String, String> data) {
data.put(defaultString(getId()) + "input.size", Integer.toString(getItems().size()));
IntStream.range(0, getItems().size()).forEach(i -> {
SelectionTableRowData current = getItems().get(i);
data.put(defaultString(getId()) + "input." + i, current.getFile().getAbsolutePath());
data.put(defaultString(getId()) + "input.password." + i, current.getPassword());
data.put(defaultString(getId()) + "input.range." + i, current.getPageSelection());
});
}

public void restoreStateFrom(Map<String, String> data) {
onClear(null);
int size = Optional.ofNullable(data.get(defaultString(getId()) + "input.size")).map(Integer::valueOf).orElse(0);
if (size > 0) {
PdfLoadRequestEvent<SelectionTableRowData> loadEvent = new PdfLoadRequestEvent<>(getOwnerModule());
IntStream.range(0, size).forEach(
i -> {
Optional.ofNullable(data.get(defaultString(getId()) + "input." + i)).ifPresent(
f -> {
SelectionTableRowData current = new SelectionTableRowData(new File(f), data
.get(defaultString(getId()) + "input.password." + i));
current.setPageSelection(data.get(defaultString(getId()) + "input.range." + i));
loadEvent.add(current);
});
});
getItems().addAll(loadEvent.getDocuments());
eventStudio().broadcast(loadEvent);
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ protected BrowsableFileField getField() {
public void saveStateTo(Map<String, String> data) {
if (descriptor != null) {
data.put(defaultString(getId()) + "input", descriptor.getFile().getAbsolutePath());
data.put(defaultString(getId()) + "password", descriptor.getPassword());
data.put(defaultString(getId()) + "input.password", descriptor.getPassword());
}
}

Expand All @@ -225,7 +225,7 @@ public void restoreStateFrom(Map<String, String> data) {
onValidState.disabled(true);
getField().getTextField().setText(f);
onValidState.disabled(false);
initializeFor(newDescriptor(new File(f), data.get(defaultString(getId()) + "password")));
initializeFor(newDescriptor(new File(f), data.get(defaultString(getId()) + "input.password")));
});
}

Expand Down
2 changes: 2 additions & 0 deletions pdfsam-merge/src/main/java/org/pdfsam/merge/MergeModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,14 @@ public ModuleDescriptor descriptor() {
}

public void onSaveWorkspace(Map<String, String> data) {
selectionPane.saveStateTo(data);
mergeOptions.saveStateTo(data);
destinationFileField.saveStateTo(data);
destinationPane.saveStateTo(data);
}

public void onLoadWorkspace(Map<String, String> data) {
selectionPane.restoreStateFrom(data);
mergeOptions.restoreStateFrom(data);
destinationFileField.restoreStateFrom(data);
destinationPane.restoreStateFrom(data);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,15 @@ protected RotateParametersBuilder getBuilder(Consumer<String> onError) {
}

public void onSaveWorkspace(Map<String, String> data) {
selectionPane.saveStateTo(data);
rotateOptions.saveStateTo(data);
destinationPane.saveStateTo(data);
destinationDirectoryField.saveStateTo(data);
prefix.saveStateTo(data);
}

public void onLoadWorkspace(Map<String, String> data) {
selectionPane.restoreStateFrom(data);
rotateOptions.restoreStateFrom(data);
destinationPane.restoreStateFrom(data);
destinationDirectoryField.restoreStateFrom(data);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public RotateSelectionPane(String ownerModule) {

public void apply(RotateParametersBuilder builder, Consumer<String> onError) {
if (!table().getItems().isEmpty()) {
table().getItems().stream().map(i -> i.toPdfFileSource()).forEach(builder::addSource);
table().getItems().stream().map(i -> i.toPdfFileSource()).forEach(builder::addSource);
} else {
onError.accept(DefaultI18nContext.getInstance().i18n("No pdf document has been selected"));
}
Expand Down

0 comments on commit 8daf731

Please sign in to comment.