/*.................................................................................................................*/ public boolean arrowTouchInRow( Graphics g, int ic, int x, int y, boolean doubleClick, int modifiers) { if (MesquiteEvent.rightClick(modifiers)) { MesquitePopup popup = new MesquitePopup(table.getMatrixPanel()); String copyMenuText = "Copy "; if (observedStates != null) { CharacterData data = observedStates.getParentData(); if (data != null) { copyMenuText += data.getName() + " Data"; copyMenuText += " [from " + data.getTaxa().getTaxonName(ic) + "]"; } } MesquiteCommand mcCopy = makeCommand("copyData", this); mcCopy.setDefaultArguments("" + ic); MesquiteCheckMenuItem mCopyItem = new MesquiteCheckMenuItem(copyMenuText, this, mcCopy, null, null); popup.add(mCopyItem); String pasteMenuText = "Paste "; if (StringUtil.notEmpty(localCopyDataClipboard) && localCopyData != null) { pasteMenuText += localCopyData.getName() + " Data"; if (StringUtil.notEmpty(localCopyDataTaxon)) { pasteMenuText += " [from " + localCopyDataTaxon + "] "; } } MesquiteCommand mcPaste = makeCommand("pasteData", this); // only if something in clipboard mcPaste.setDefaultArguments("" + ic); MesquiteCheckMenuItem mPasteItem = new MesquiteCheckMenuItem(pasteMenuText, this, mcPaste, null, null); mPasteItem.setEnabled(StringUtil.notEmpty(localCopyDataClipboard)); popup.add(mPasteItem); MesquiteCommand mcDelete = makeCommand("deleteDataTouched", this); mcDelete.setDefaultArguments("" + ic); MesquiteCheckMenuItem mDeleteItem = new MesquiteCheckMenuItem("Delete Data", this, mcDelete, null, null); popup.add(mDeleteItem); popup.showPopup(x, y + 18); return true; } return false; }