package logbook.gui; import logbook.constants.AppConstants; import logbook.data.Data; import logbook.data.DataType; import logbook.gui.logic.CreateReportLogic; import logbook.gui.logic.TableItemCreator; import logbook.scripting.TableItemCreatorProxy; import logbook.util.SwtUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TableItem; /** * 所有装備一覧 * */ public final class ItemTable extends AbstractTableDialog { /** * @param parent */ public ItemTable(Shell parent, MenuItem menuItem) { super(parent, menuItem); } @Override protected void createContents() { MenuItem itemCopy = new MenuItem(this.tablemenu, SWT.NONE); itemCopy.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { StringBuilder sb = new StringBuilder(); for (TableItem item : ItemTable.this.table.getSelection()) { if (sb.length() > 0) { sb.append(", "); } sb.append(item.getText(1)); } Clipboard clipboard = new Clipboard(Display.getDefault()); clipboard.setContents(new Object[] { sb.toString() }, new Transfer[] { TextTransfer.getInstance() }); } }); itemCopy.setText("装備名をコピー(&1)"); } @Override protected String getTitleMain() { return "所有装備一覧"; } @Override protected Point getSize() { return SwtUtils.DPIAwareSize(new Point(600, 350)); } @Override protected String[] getTableHeader() { return CreateReportLogic.getItemListHeader(); } @Override protected void updateTableBody() { this.body = CreateReportLogic.getItemListBody(); } @Override protected TableItemCreator getTableItemCreator() { return TableItemCreatorProxy.get(AppConstants.ITEMTABLE_PREFIX); } /** * 更新する必要のあるデータ */ @SuppressWarnings("incomplete-switch") @Override public void update(DataType type, Data data) { switch (type) { case CHANGE: case PORT: case SHIP2: case SHIP3: case SLOTITEM_MEMBER: case GET_SHIP: case DESTROY_SHIP: case DESTROY_ITEM2: case POWERUP: case LOCK_SLOTITEM: case REMODEL_SLOT: this.needsUpdate = true; } } }