Program: 44849
Project: 44849
Buggy source:
public void mouseClicked(MouseEvent e){
  if (mainFrame.getNoEventsMode())   return;
  Object source=e.getSource();
  if ((System.currentTimeMillis() - doubleClickTime) < DOUBLE_CLICK_INTERVAL) {
    if (doubleClickCounter == 1) {
      doubleClickCounter=2;
      e.consume();
    }
  }
 else {
    doubleClickTime=System.currentTimeMillis();
    doubleClickCounter=1;
  }
  if (source == this && DesktopManager.isLeftMouseButton(e)) {
    if ((doubleClickCounter == 1) && (System.currentTimeMillis() - selectionChangedTimestamp) > EDIT_NAME_CLICK_DELAY) {
      int clickX=e.getX();
      Point p=new Point(clickX,e.getY());
      final int row=rowAtPoint(p);
      final int viewColumn=columnAtPoint(p);
      final int column=convertColumnIndexToModel(viewColumn);
      if (row == currentRow && !isParentFolderSelected() && (column == Columns.NAME || column == Columns.DATE || column == Columns.PERMISSIONS)) {
        FontMetrics fm=getFontMetrics(FileTableCellRenderer.getCellFont());
        int labelWidth=fm.stringWidth((String)tableModel.getValueAt(row,column));
        int columnX=(int)getTableHeader().getHeaderRect(viewColumn).getX();
        if (clickX < columnX + CellLabel.CELL_BORDER_WIDTH || clickX > columnX + labelWidth + CellLabel.CELL_BORDER_WIDTH)         return;
        if (hasFocus() && System.currentTimeMillis() - focusGainedTime > 100) {
          new Thread(){
            @Override public void run(){
              try {
                sleep(800);
              }
 catch (              InterruptedException e) {
              }
              if ((System.currentTimeMillis() - lastDoubleClickTimestamp) > 1000 && row == currentRow) {
                if (column == Columns.NAME) {
                  if (!isEditing())                   editCurrentFilename();
                }
 else                 if (column == Columns.DATE) {
                  ActionManager.performAction(com.mucommander.ui.action.impl.ChangeDateAction.Descriptor.ACTION_ID,mainFrame);
                }
 else                 if (column == Columns.PERMISSIONS) {
                  if (getSelectedFile().getChangeablePermissions().getIntValue() != 0)                   ActionManager.performAction(com.mucommander.ui.action.impl.ChangePermissionsAction.Descriptor.ACTION_ID,mainFrame);
                }
              }
            }
          }
.start();
        }
      }
    }
 else     if (doubleClickCounter == 2) {
      this.lastDoubleClickTimestamp=System.currentTimeMillis();
      ActionManager.performAction(e.isShiftDown() ? com.mucommander.ui.action.impl.OpenNativelyAction.Descriptor.ACTION_ID : com.mucommander.ui.action.impl.OpenAction.Descriptor.ACTION_ID,mainFrame);
    }
  }
}

Fixed version (ground truth):
public void mouseClicked(MouseEvent e){
  if (mainFrame.getNoEventsMode())   return;
  Object source=e.getSource();
  if ((System.currentTimeMillis() - doubleClickTime) < DOUBLE_CLICK_INTERVAL && selectionChangedTimestamp < doubleClickTime) {
    if (doubleClickCounter == 1) {
      doubleClickCounter=2;
      e.consume();
    }
  }
 else {
    doubleClickTime=System.currentTimeMillis();
    doubleClickCounter=1;
  }
  if (source == this && DesktopManager.isLeftMouseButton(e)) {
    if ((doubleClickCounter == 1) && (System.currentTimeMillis() - selectionChangedTimestamp) > EDIT_NAME_CLICK_DELAY) {
      int clickX=e.getX();
      Point p=new Point(clickX,e.getY());
      final int row=rowAtPoint(p);
      final int viewColumn=columnAtPoint(p);
      final int column=convertColumnIndexToModel(viewColumn);
      if (row == currentRow && !isParentFolderSelected() && (column == Columns.NAME || column == Columns.DATE || column == Columns.PERMISSIONS)) {
        FontMetrics fm=getFontMetrics(FileTableCellRenderer.getCellFont());
        int labelWidth=fm.stringWidth((String)tableModel.getValueAt(row,column));
        int columnX=(int)getTableHeader().getHeaderRect(viewColumn).getX();
        if (clickX < columnX + CellLabel.CELL_BORDER_WIDTH || clickX > columnX + labelWidth + CellLabel.CELL_BORDER_WIDTH)         return;
        if (hasFocus() && System.currentTimeMillis() - focusGainedTime > 100) {
          new Thread(){
            @Override public void run(){
              try {
                sleep(800);
              }
 catch (              InterruptedException e) {
              }
              if ((System.currentTimeMillis() - lastDoubleClickTimestamp) > 1000 && row == currentRow) {
                if (column == Columns.NAME) {
                  if (!isEditing())                   editCurrentFilename();
                }
 else                 if (column == Columns.DATE) {
                  ActionManager.performAction(com.mucommander.ui.action.impl.ChangeDateAction.Descriptor.ACTION_ID,mainFrame);
                }
 else                 if (column == Columns.PERMISSIONS) {
                  if (getSelectedFile().getChangeablePermissions().getIntValue() != 0)                   ActionManager.performAction(com.mucommander.ui.action.impl.ChangePermissionsAction.Descriptor.ACTION_ID,mainFrame);
                }
              }
            }
          }
.start();
        }
      }
    }
 else     if (doubleClickCounter == 2) {
      this.lastDoubleClickTimestamp=System.currentTimeMillis();
      ActionManager.performAction(e.isShiftDown() ? com.mucommander.ui.action.impl.OpenNativelyAction.Descriptor.ACTION_ID : com.mucommander.ui.action.impl.OpenAction.Descriptor.ACTION_ID,mainFrame);
    }
  }
}