package com.dgex.offspring.trader.askorders;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import nxt.Asset;
import nxt.Order;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.ui.di.UIEventTopic;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.e4.ui.services.IStylingEngine;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import com.dgex.offspring.config.ContactsService;
import com.dgex.offspring.nxtCore.service.INxtService;
import com.dgex.offspring.swt.table.PaginationContainer;
import com.dgex.offspring.trader.api.IAssetExchange;
import com.dgex.offspring.ui.PlaceBidOrderWizard;
import com.dgex.offspring.user.service.IUserService;
public class AskOrdersPart {
private Composite mainComposite;
private AskOrdersViewer ordersViewer;
private PaginationContainer paginationContainer;
@PostConstruct
public void postConstruct(final Composite parent, final INxtService nxt,
final IUserService userService, IStylingEngine engine, UISynchronize sync) {
mainComposite = new Composite(parent, SWT.NONE);
GridLayoutFactory.fillDefaults().numColumns(1).spacing(5, 2).margins(0, 0)
.applyTo(mainComposite);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true)
.applyTo(mainComposite);
paginationContainer = new PaginationContainer(mainComposite, SWT.NONE);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true)
.applyTo(paginationContainer);
ordersViewer = new AskOrdersViewer(paginationContainer.getViewerParent(),
nxt, ContactsService.getInstance(), engine, userService, sync);
ordersViewer.getTable().setToolTipText("Right click for Quick Buy");
paginationContainer.setTableViewer(ordersViewer, 100);
// add context menu for quick buy
Menu contextMenu = new Menu(ordersViewer.getTable());
ordersViewer.getTable().setMenu(contextMenu);
MenuItem itemQuickBuy = new MenuItem(contextMenu, SWT.PUSH);
itemQuickBuy.setText("Quick Buy");
itemQuickBuy.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selection = (IStructuredSelection) ordersViewer
.getSelection();
Object order = selection.getFirstElement();
if (order instanceof Order.Ask) {
Shell shell = parent.getShell();
Long assetId = ((Order.Ask) order).getAssetId();
int quantity = ((Order.Ask) order).getQuantity();
long price = ((Order.Ask) order).getPrice();
new WizardDialog(shell, new PlaceBidOrderWizard(userService, nxt,
assetId, quantity, price)).open();
}
}
});
}
@Inject
@Optional
private void onAssetSelected(
@UIEventTopic(IAssetExchange.TOPIC_ASSET_SELECTED) Asset asset) {
if (ordersViewer != null && !ordersViewer.getControl().isDisposed()) {
ordersViewer.setInput(asset.getId());
ordersViewer.refresh();
}
}
}