extract PackagePanel

This commit is contained in:
Maxim.Medvedev
2012-07-13 13:52:02 +04:00
parent 4ea5512c86
commit 6d90a30162
2 changed files with 88 additions and 48 deletions
@@ -22,7 +22,6 @@ import com.intellij.psi.codeStyle.PackageEntry;
import com.intellij.psi.codeStyle.PackageEntryTable;
import com.intellij.ui.*;
import com.intellij.ui.table.JBTable;
import com.intellij.util.ui.UIUtil;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
@@ -49,7 +48,7 @@ public class CodeStyleImportsPanel extends JPanel {
private JPanel myPackagesPanel;
private JPanel myImportsLayoutPanel;
private JPanel myWholePanel;
private final ImportLayoutPanel myImportLayoutPanel;
private ImportLayoutPanel myImportLayoutPanel;
public CodeStyleImportsPanel(CodeStyleSettings settings) {
mySettings = settings;
@@ -59,6 +58,11 @@ public class CodeStyleImportsPanel extends JPanel {
myGeneralPanel.add(createGeneralOptionsPanel(), BorderLayout.CENTER);
myJSPPanel.add(createJspImportLayoutPanel(), BorderLayout.CENTER);
createImportPanel();
createPackagePanel();
}
private void createImportPanel() {
myImportLayoutPanel = new ImportLayoutPanel() {
@Override
public void refresh() {
@@ -67,7 +71,11 @@ public class CodeStyleImportsPanel extends JPanel {
}
};
myImportsLayoutPanel.add(myImportLayoutPanel, BorderLayout.CENTER);
myPackagesPanel.add(createPackagesPanel(), BorderLayout.CENTER);
}
private void createPackagePanel() {
myPackageTable = ImportLayoutPanel.createTableForPackageEntries(myPackageList, myImportLayoutPanel);
myPackagesPanel.add(PackagePanel.createPackagesPanel(myPackageTable, myPackageList), BorderLayout.CENTER);
}
private JPanel createJspImportLayoutPanel() {
@@ -145,26 +153,6 @@ public class CodeStyleImportsPanel extends JPanel {
return group.createPanel();
}
private JPanel createPackagesPanel() {
myPackageTable = ImportLayoutPanel.createTableForPackageEntries(myPackageList, myImportLayoutPanel);
JPanel panel = ToolbarDecorator.createDecorator(myPackageTable)
.setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
addPackageToPackages();
}
}).setRemoveAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
removeEntryFromPackages();
}
}).disableUpDownActions().setPreferredSize(new Dimension(-1, 150)).createPanel();
UIUtil.addBorder(panel, IdeBorderFactory.createTitledBorder(ApplicationBundle.message("title.packages.to.use.import.with"), false));
return panel;
}
private void refreshTable(final JBTable table, final PackageEntryTable packageTable) {
AbstractTableModel model = (AbstractTableModel)table.getModel();
table.createDefaultColumnsFromModel();
@@ -172,31 +160,6 @@ public class CodeStyleImportsPanel extends JPanel {
ImportLayoutPanel.resizeColumns(packageTable, table, myImportLayoutPanel.areStaticImportsEnabled());
}
private void addPackageToPackages() {
int selected = myPackageTable.getSelectedRow() + 1;
if (selected < 0) {
selected = myPackageList.getEntryCount();
}
PackageEntry entry = new PackageEntry(false, "", true);
myPackageList.insertEntryAt(entry, selected);
ImportLayoutPanel.refreshTableModel(selected, myPackageTable);
}
private void removeEntryFromPackages() {
int selected = myPackageTable.getSelectedRow();
if (selected < 0) return;
TableUtil.stopEditing(myPackageTable);
myPackageList.removeEntryAt(selected);
AbstractTableModel model = (AbstractTableModel)myPackageTable.getModel();
model.fireTableRowsDeleted(selected, selected);
if (selected >= myPackageList.getEntryCount()) {
selected--;
}
if (selected >= 0) {
myPackageTable.setRowSelectionInterval(selected, selected);
}
}
public void reset(CodeStyleSettings settings) {
myCbUseFQClassNames.setSelected(settings.USE_FQ_CLASS_NAMES);
myCbUseFQClassNamesInJavaDoc.setSelected(settings.USE_FQ_CLASS_NAMES_IN_JAVADOC);
@@ -0,0 +1,77 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* 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.intellij.application.options;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.psi.codeStyle.PackageEntry;
import com.intellij.psi.codeStyle.PackageEntryTable;
import com.intellij.ui.*;
import com.intellij.ui.table.JBTable;
import com.intellij.util.ui.UIUtil;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.awt.*;
/**
* @author Max Medvedev
*/
public class PackagePanel {
private static void addPackageToPackages(JBTable table, PackageEntryTable list) {
int selected = table.getSelectedRow() + 1;
if (selected < 0) {
selected = list.getEntryCount();
}
PackageEntry entry = new PackageEntry(false, "", true);
list.insertEntryAt(entry, selected);
ImportLayoutPanel.refreshTableModel(selected, table);
}
private static void removeEntryFromPackages(JBTable table, PackageEntryTable list) {
int selected = table.getSelectedRow();
if (selected < 0) return;
TableUtil.stopEditing(table);
list.removeEntryAt(selected);
AbstractTableModel model = (AbstractTableModel)table.getModel();
model.fireTableRowsDeleted(selected, selected);
if (selected >= list.getEntryCount()) {
selected--;
}
if (selected >= 0) {
table.setRowSelectionInterval(selected, selected);
}
}
public static JPanel createPackagesPanel(final JBTable packageTable, final PackageEntryTable packageList) {
JPanel panel = ToolbarDecorator.createDecorator(packageTable)
.setAddAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
addPackageToPackages(packageTable, packageList);
}
}).setRemoveAction(new AnActionButtonRunnable() {
@Override
public void run(AnActionButton button) {
removeEntryFromPackages(packageTable, packageList);
}
}).disableUpDownActions().setPreferredSize(new Dimension(-1, 150)).createPanel();
UIUtil.addBorder(panel, IdeBorderFactory.createTitledBorder(ApplicationBundle.message("title.packages.to.use.import.with"), false));
return panel;
}
}