| /* |
| * Copyright (C) 2014 The Android Open Source Project |
| * |
| * 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. |
| */ |
| package com.android.tools.idea.editors.strings.table; |
| |
| import org.jetbrains.annotations.NotNull; |
| |
| import javax.swing.*; |
| import javax.swing.table.TableColumn; |
| import java.awt.event.MouseAdapter; |
| import java.awt.event.MouseEvent; |
| |
| public class HeaderCellSelectionListener extends MouseAdapter { |
| private final JTable myTable; |
| private int myUserResizeIndex; |
| |
| public HeaderCellSelectionListener(@NotNull JTable table) { |
| myTable = table; |
| myUserResizeIndex = -1; |
| } |
| |
| @Override |
| public void mouseReleased(MouseEvent e) { |
| // Column widths may have changed, so resize the table |
| ColumnUtil.expandToViewportWidthIfNecessary(myTable, myUserResizeIndex); |
| myUserResizeIndex = -1; |
| } |
| |
| @Override |
| public void mouseClicked(MouseEvent e) { |
| int index = myTable.columnAtPoint(e.getPoint()); |
| TableColumn column = myTable.getColumnModel().getColumn(index); |
| HeaderCellRenderer renderer = (HeaderCellRenderer) column.getHeaderRenderer(); |
| |
| // Collapse or expand the column depending on whether it is at least at its minimum expanded width |
| boolean useCollapsedWidth = column.getWidth() >= renderer.getMinimumExpandedWidth(); |
| ColumnUtil.setPreferredWidth(column, useCollapsedWidth ? renderer.getCollapsedWidth() : renderer.getFullExpandedWidth()); |
| |
| // Collapsing a column may have made the table not wide enough |
| ColumnUtil.expandToViewportWidthIfNecessary(myTable, index); |
| } |
| |
| @Override |
| public void mouseDragged(MouseEvent e) { |
| TableColumn column = myTable.getTableHeader().getResizingColumn(); |
| if (column != null) { |
| myUserResizeIndex = column.getModelIndex(); |
| ColumnUtil.setPreferredWidth(column, column.getWidth()); |
| } |
| } |
| } |