@Override protected void showPopupMenu(MouseEvent ev) { // first select/deselect the row: int iRow = tblTasks.rowAtPoint(ev.getPoint()); // Nur, wenn nicht selektiert, selektieren: if (!tblTasks.isRowSelected(iRow)) { if ((ev.getModifiers() & MouseEvent.CTRL_MASK) != 0) { // Control gedr\u00fcckt: // Zeile zur Selektion hinzuf\u00fcgen: tblTasks.addRowSelectionInterval(iRow, iRow); } else { // Sonst nur diese Zeile selektieren: tblTasks.setRowSelectionInterval(iRow, iRow); } } // if // enable/disable menu items final int iSelectedRow = this.tblTasks.getSelectedRow(); final TimelimitTaskTableModel model = timelimittaskview.getTimelimitTaskTableModel(); model.getTimelimitTask(iSelectedRow); // todo: there should be a better place for that... final boolean bPerformEnabled = existsRelatedObjectsFor(getSelectedTimelimitTasks(timelimittaskview)); actPerformTask.setEnabled(bPerformEnabled); // this.popupTimelimitTasks.miPerform.setEnabled(bPerformEnabled); final boolean bFinished = areTasksCompleted(getSelectedTimelimitTasks(timelimittaskview)); this.popupTimelimitTasks.miFinish.setState(bFinished); super.showPopupMenu(ev); }
private TimelimitTaskTableModel newTimelimitTaskTableModel() { final TimelimitTaskTableModel result = new TimelimitTaskTableModel(); // add columns: final List<String> lstFieldNames = new LinkedList<String>(CollectableTimelimitTask.clcte.getFieldNames()); // sort using the order stored in the preferences: List<String> lstFieldNameOrderTemp; try { lstFieldNameOrderTemp = PreferencesUtils.getStringList(this.prefs, PREFS_NODE_SELECTEDFIELDS); } catch (PreferencesException ex) { LOG.error( "Failed to retrieve list of selected fields from the preferences. They will be empty."); lstFieldNameOrderTemp = new ArrayList<String>(); } final List<String> lstFieldNameOrder = lstFieldNameOrderTemp; Collections.sort( lstFieldNames, new Comparator<String>() { private int getOrder(Object o) { int result = lstFieldNameOrder.indexOf(o); if (result == -1) { // new fields are shown at the end: result = lstFieldNameOrder.size(); } return result; } @Override public int compare(String o1, String o2) { int iDiff = getOrder(o1) - getOrder(o2); return (iDiff == 0) ? 0 : (iDiff / Math.abs(iDiff)); } }); int iColumn = 0; final List<String> lstNamesOfFieldsToDisplay = CollectableTimelimitTask.clcte.getNamesOfFieldsToDisplay(); for (Iterator<String> iter = lstFieldNames.iterator(); iter.hasNext(); ) { final String sFieldName = iter.next(); final CollectableEntityField clctef = CollectableTimelimitTask.clcte.getEntityField(sFieldName); if (lstNamesOfFieldsToDisplay.contains(sFieldName)) { result.addColumn(iColumn++, clctef); } } if (result.getColumnCount() > 0) { result.setSortKeys(Collections.singletonList(new SortKey(0, SortOrder.ASCENDING)), false); } return result; }
private void setupTableModelSorting() { final TimelimitTaskTableModel tblmdl = this.timelimittaskview.getTimelimitTaskTableModel(); if (tblmdl.getColumnCount() > 0) { List<SortKey> sortKeys = readColumnOrderFromPreferences(); if (sortKeys.isEmpty()) { sortKeys = Collections.singletonList( new SortKey( tblmdl.findColumnByFieldName(CollectableTask.FIELDNAME_SCHEDULED), SortOrder.ASCENDING)); } try { tblmdl.setSortKeys(sortKeys, false); } catch (Exception e) { } } }
public void refreshTimelimitTaskView() { boolean bUnfinishedOnly = !this.timelimittaskview.btnShowAllTasks.getModel().isSelected(); final Collection<TimelimitTaskVO> colltaskvo = this.tltaskDelegate.getTimelimitTasks(bUnfinishedOnly); final List<CollectableTimelimitTask> lstclct = CollectionUtils.transform(colltaskvo, new CollectableTimelimitTask.MakeCollectable()); final TimelimitTaskTableModel tblmdl = this.timelimittaskview.getTimelimitTaskTableModel(); tblmdl.setCollectables(lstclct); // TableUtils.setOptimalColumnWidths(this.timelimittaskview.getTable()); TaskController.setColumnWidths( readColumnWidthsFromPreferences(), this.timelimittaskview.getTable()); // todo: sorting order? / UA // final int iColumnScheduled = // tblmdl.findColumnByFieldName(CollectableTimelimitTask.FIELDNAME_SCHEDULED); // tblmdl.setSortingOrder(iColumnScheduled, true, true); // NUCLOS-642 setupRenderers(timelimittaskview.getTable()); }
@Override public boolean importData(JComponent comp, Transferable transferable) { boolean result = false; if (comp instanceof JTable) { final JTable tbl = (JTable) comp; try { final int iSelectedRow = tbl.getSelectedRow(); if (iSelectedRow != -1) { final TimelimitTaskTableModel tblmdl = TimelimitTaskController.this.timelimittaskview.getTimelimitTaskTableModel(); final CollectableTimelimitTask clctTarget = tblmdl.getCollectable(iSelectedRow); final TimelimitTaskVO taskvoTarget = clctTarget.getTimelimitTaskVO(); final GenericObjectIdModuleProcess goimp = (GenericObjectIdModuleProcess) transferable.getTransferData(new GenericObjectIdModuleProcess.DataFlavor()); if (taskvoTarget.getCompleted() != null) { final String sMessage = getSpringLocaleDelegate() .getMessage( "TimelimitTaskController.5", "Dieser Eintrag ist bereits abgeschlossen. Er kann nicht mehr ver\u00e4ndert werden."); throw new NuclosBusinessException(sMessage); } boolean bDoIt = (taskvoTarget.getGenericObjectId() == null); if (!bDoIt) { final String sQuestion = getSpringLocaleDelegate() .getMessage( "TimelimitTaskController.13", "Soll das Objekt \"{0}\" zugeordnet werden?", goimp.getGenericObjectIdentifier()) + "\n" + getSpringLocaleDelegate() .getMessage( "TimelimitTaskController.3", "Die bestehende Zuordnung zu \"{0}\" wird dadurch aufgehoben.", taskvoTarget.getIdentifier()); final int iBtn = JOptionPane.showConfirmDialog( this.parent, sQuestion, getSpringLocaleDelegate() .getMessage( "TimelimitTaskController.17", "Zugeordnetes Objekt \u00e4ndern"), JOptionPane.OK_CANCEL_OPTION); bDoIt = (iBtn == JOptionPane.OK_OPTION); } if (bDoIt) { taskvoTarget.setGenericObjectId(new Integer(goimp.getGenericObjectId())); final TimelimitTaskVO taskvoUpdated = tltaskDelegate.update(taskvoTarget); tblmdl.setCollectable(iSelectedRow, new CollectableTimelimitTask(taskvoUpdated)); result = true; } } } catch (UnsupportedFlavorException ex) { JOptionPane.showMessageDialog( parent, getSpringLocaleDelegate() .getMessage( "TimelimitTaskController.4", "Dieser Datentransfer wird von dem ausgew\u00e4hlten Objekt nicht unterst\u00fctzt.")); } catch (IOException ex) { throw new NuclosFatalException(ex); } catch (CommonBusinessException ex) { Errors.getInstance().showExceptionDialog(parent, ex); } } return result; }