package com.dgex.offspring.application.handlers;
import nxt.Block;
import nxt.Nxt;
import nxt.util.Convert;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.e4.ui.services.IStylingEngine;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
import com.dgex.offspring.config.ContactsService;
import com.dgex.offspring.nxtCore.service.INxtService;
import com.dgex.offspring.ui.InspectBlockDialog;
import com.dgex.offspring.user.service.IUserService;
public class LookupBlockHandler {
class BlockValidator implements IInputValidator {
@Override
public String isValid(String text) {
text = text.trim();
if (text == null || text.isEmpty()) {
return "Invalid Block Id";
}
Long id = Convert.parseUnsignedLong(text);
if (id == null) {
return "Invalid Block Id";
}
Block block = Nxt.getBlockchain().getBlock(id);
if (block == null) {
return "That block does not exist";
}
return null;
}
}
@Execute
public void execute(INxtService nxt, IStylingEngine engine,
IUserService userService, UISynchronize sync) {
InputDialog dialog = new InputDialog(Display.getCurrent().getActiveShell(),
"Lookup Block", "Enter block id", "", new BlockValidator());
if (dialog.open() == Window.OK) {
Long id = Convert.parseUnsignedLong(dialog.getValue());
InspectBlockDialog.show(id, nxt, engine, userService, sync,
ContactsService.getInstance());
}
}
}