Skip to content

Commit

Permalink
Merge pull request #36 from aymanhab/implement_coordinate_filter
Browse files Browse the repository at this point in the history
Implement coordinate filter
  • Loading branch information
aymanhab authored Jun 10, 2024
2 parents 86da5c8 + 58b3102 commit 092b2ca
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
*/
package org.opensim.rcnl;

import java.util.Vector;
import java.util.regex.Pattern;
import javax.swing.table.AbstractTableModel;
import org.opensim.modeling.ArrayBool;
import org.opensim.modeling.ArrayStr;
Expand All @@ -22,6 +24,8 @@ public class CoordinateTableModel extends AbstractTableModel{
String[] tableColumnNames= {"Coordiates", "Selected"};
ArrayStr coordinateNames = new ArrayStr();
ArrayBool selected = new ArrayBool();
String[] availableQuantities;
Vector<Integer> shownQuantities=new Vector<Integer>(50);

public CoordinateTableModel(PropertyStringList coordinateListProperty, Model mdl){
this.coordinateListProperty = coordinateListProperty;
Expand All @@ -32,16 +36,27 @@ public CoordinateTableModel(PropertyStringList coordinateListProperty, Model mdl
setValueAt(Boolean.FALSE, i, 0);
selected.append(Boolean.FALSE);
}
availableQuantities = new String[coordinateNames.getSize()];
coordinateNames.toVector().copyInto(availableQuantities);
showAll();
// Now select entries based on passed in coordinateListProperty
for (int p=0; p < coordinateListProperty.size(); p++){
int cIndex = model.getCoordinateSet().getIndex(coordinateListProperty.getValue(p));
setValueAt(Boolean.TRUE, cIndex, 1);
selected.set(cIndex, true);
}
showAll();

}

private void showAll() {
shownQuantities.clear();
for(int i=0;i<availableQuantities.length;i++)
shownQuantities.add(i);
}
@Override
public int getRowCount() {
return coordinateNames.getSize(); //To change body of generated methods, choose Tools | Templates.
return shownQuantities.size(); //To change body of generated methods, choose Tools | Templates.
}

@Override
Expand All @@ -52,9 +67,9 @@ public int getColumnCount() {
@Override
public Object getValueAt(int row, int col) {
if (col==0)
return coordinateNames.get(row);
return availableQuantities[shownQuantities.get(row)];
else
return selected.get(row);
return selected.get(shownQuantities.get(row));
}

public String getColumnName(int col) {
Expand All @@ -63,7 +78,7 @@ public String getColumnName(int col) {

public void setValueAt(Object aValue, int row, int col) {
if (col ==1) {
selected.set(row, (Boolean)aValue);
selected.set(shownQuantities.get(row), (Boolean)aValue);
fireTableCellUpdated(row, col);
}
}
Expand All @@ -89,4 +104,17 @@ public void populateCoordinateListProperty() {
coordinateListProperty.appendValue(coordinateNames.get(p));
}
}

void restrictNamesBy(String pattern){
Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
shownQuantities.clear();
for(int i=0; i<availableQuantities.length ;i++){
//System.out.println("Match ["+availableQuantities[i]+"] against pattern "+pattern+" returns "+p.matcher(availableQuantities[i]).matches());
if (p.matcher(availableQuantities[i]).matches())
shownQuantities.add(i);
}
fireTableDataChanged();

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,7 @@ private void jButtonEditCoordinateListActionPerformed(java.awt.event.ActionEvent
// TODO add your handling code here:
// Create Panel for selecting from existing model coordinates
CoordinateTableModel ctm = new CoordinateTableModel(mtpPersonalizationToolModel.getPropCoordinateListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, false);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Coordinates");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand All @@ -544,7 +544,7 @@ private void jButtonEditCoordinateListActionPerformed(java.awt.event.ActionEvent
private void jButtonEditActivationMGActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEditActivationMGActionPerformed
// TODO add your handling code here:
MuscleGroupTableModel ctm = new MuscleGroupTableModel(mtpPersonalizationToolModel.getPropActivationMGListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, true);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Groups");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand All @@ -557,7 +557,7 @@ private void jButtonEditActivationMGActionPerformed(java.awt.event.ActionEvent e

private void jButtonEditNormalizedFLMGActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEditNormalizedFLMGActionPerformed
MuscleGroupTableModel ctm = new MuscleGroupTableModel(mtpPersonalizationToolModel.getPropNormalizedFLMGListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, true);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Groups");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand All @@ -571,7 +571,7 @@ private void jButtonEditNormalizedFLMGActionPerformed(java.awt.event.ActionEvent
private void jButtonEditMissingEMGActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEditMissingEMGActionPerformed
// TODO add your handling code here:
MuscleGroupTableModel ctm = new MuscleGroupTableModel(mtpPersonalizationToolModel.getPropMissingEMGMGListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, true);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Groups");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand All @@ -585,7 +585,7 @@ private void jButtonEditMissingEMGActionPerformed(java.awt.event.ActionEvent evt
private void jButtonEditCollectedEMGActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEditCollectedEMGActionPerformed
// TODO add your handling code here:
MuscleGroupTableModel ctm = new MuscleGroupTableModel(mtpPersonalizationToolModel.getPropCollectedEMGMGListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, true);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Groups");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,7 @@ private void jButtonEditCoordinateListActionPerformed(java.awt.event.ActionEvent
// TODO add your handling code here:
// Create Panel for selecting from existing model coordinates
CoordinateTableModel ctm = new CoordinateTableModel(ncpPersonalizationToolModel.getPropCoordinateListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, false);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Coordinates");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand All @@ -502,7 +502,7 @@ private void jButtonEditCoordinateListActionPerformed(java.awt.event.ActionEvent
private void jButtonEditActivationMGActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEditActivationMGActionPerformed
// TODO add your handling code here:
MuscleGroupTableModel ctm = new MuscleGroupTableModel(ncpPersonalizationToolModel.getPropActivationMGListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, true);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Groups");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand All @@ -515,7 +515,7 @@ private void jButtonEditActivationMGActionPerformed(java.awt.event.ActionEvent e

private void jButtonEditNormalizedFLMGActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEditNormalizedFLMGActionPerformed
MuscleGroupTableModel ctm = new MuscleGroupTableModel(ncpPersonalizationToolModel.getPropNormalizedFLMGListString(), model);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm, true);
SelectQuantitiesFromListJPanel selectionPanel = new SelectQuantitiesFromListJPanel(ctm);
DialogDescriptor dlg = new DialogDescriptor(selectionPanel,"Select Groups");
dlg.setModal(true);
DialogDisplayer.getDefault().createDialog(dlg).setVisible(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,10 @@ public class SelectQuantitiesFromListJPanel extends javax.swing.JPanel implement
/**
* Creates new form SelectCoordinatesJPanel
*/
public SelectQuantitiesFromListJPanel(AbstractTableModel aTableModel, boolean showFilter) {
public SelectQuantitiesFromListJPanel(AbstractTableModel aTableModel) {
tableModel = aTableModel;
initComponents();
if (!showFilter)
FilterTextField.setEditable(false);

metaCharacters.add("*");
metaCharacters.add("+");
metaCharacters.add("?");
Expand Down Expand Up @@ -170,6 +169,8 @@ private void handlePatternChange()

if (tableModel instanceof MuscleGroupTableModel)
((MuscleGroupTableModel) tableModel).restrictNamesBy(".*"+rawPattern+".*");
else if (tableModel instanceof CoordinateTableModel)
((CoordinateTableModel) tableModel).restrictNamesBy(".*"+rawPattern+".*");
//System.out.println("restrict by"+".*"+rawPattern+".*");
}
}

0 comments on commit 092b2ca

Please sign in to comment.