![JAR search and dependency download from the Maven repository](/logo.png)
com.googlecode.vfsjfilechooser2.utils.SwingCommonsUtilities Maven / Gradle / Ivy
/*
*
* Copyright (C) 2005-2008 Yves Zoundi
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* under the License.
*/
package com.googlecode.vfsjfilechooser2.utils;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.table.TableCellRenderer;
import org.apache.commons.vfs2.FileObject;
/**
* Copy of some functions in SwingUtilities2
* to avoid using sun proprietary classes
* @author Yves Zoundi
*/
public final class SwingCommonsUtilities {
private final static javax.swing.JFileChooser fr = new javax.swing.JFileChooser();
private final static javax.swing.filechooser.FileSystemView fw = fr.getFileSystemView();
private static FileObject defaultDir;
private SwingCommonsUtilities() {
throw new AssertionError("Trying to instanciate SwingCommonsUtilities");
}
public static FileObject getVFSFileChooserDefaultDirectory() {
if (defaultDir == null) {
try {
defaultDir = VFSUtils.getFileSystemManager()
.toFileObject(fw.getDefaultDirectory());
} catch (Exception e) {
defaultDir = VFSUtils.resolveFileObject(System.getProperty(
"user.home"));
}
}
return defaultDir;
}
/**
*
* @param table
* @param row
* @param column
* @param p
* @return
*/
public static boolean pointOutsidePrefSize(JTable table, int row,
int column, Point p) {
if ((table.convertColumnIndexToModel(column) != 0) || (row == -1)) {
return true;
}
TableCellRenderer tcr = table.getCellRenderer(row, column);
Object value = table.getValueAt(row, column);
Component cell = tcr.getTableCellRendererComponent(table, value, false,
false, row, column);
Dimension itemSize = cell.getPreferredSize();
Rectangle cellBounds = table.getCellRect(row, column, false);
cellBounds.width = itemSize.width;
cellBounds.height = itemSize.height;
// See if coords are inside
// ASSUME: mouse x,y will never be < cell's x,y
assert ((p.x >= cellBounds.x) && (p.y >= cellBounds.y));
if ((p.x > (cellBounds.x + cellBounds.width))
|| (p.y > (cellBounds.y + cellBounds.height))) {
return true;
}
return false;
}
/**
*
* @param list
* @param index
* @param point
* @return
*/
public static boolean pointIsInActualBounds(JList list, int index,
Point point) {
ListCellRenderer renderer = list.getCellRenderer();
ListModel dataModel = list.getModel();
Object value = dataModel.getElementAt(index);
Component item = renderer.getListCellRendererComponent(list, value,
index, false, false);
Dimension itemSize = item.getPreferredSize();
Rectangle cellBounds = list.getCellBounds(index, index);
if (!item.getComponentOrientation().isLeftToRight()) {
cellBounds.x += (cellBounds.width - itemSize.width);
}
cellBounds.width = itemSize.width;
return cellBounds.contains(point);
}
/**
*
* @param list
* @param point
* @return
*/
public static int loc2IndexFileList(JList list, Point point) {
int index = list.locationToIndex(point);
if (index != -1) {
Object bySize = list.getClientProperty("List.isFileList");
if (bySize instanceof Boolean && ((Boolean) bySize).booleanValue()
&& !pointIsInActualBounds(list, index, point)) {
index = -1;
}
}
return index;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy