use of com.intellij.openapi.ui.SplitterProportionsData in project intellij-community by JetBrains.
the class ContentChooser method dispose.
@Override
public void dispose() {
super.dispose();
SplitterProportionsData d = new SplitterProportionsDataImpl();
d.externalizeToDimensionService(getClass().getName());
d.saveSplitterProportions(mySplitter);
if (myViewer != null) {
EditorFactory.getInstance().releaseEditor(myViewer);
myViewer = null;
}
}
use of com.intellij.openapi.ui.SplitterProportionsData in project intellij-community by JetBrains.
the class InjectionsSettingsUI method doImportAction.
private void doImportAction(final DataContext dataContext) {
final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, true, false, true, false) {
@Override
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
return super.isFileVisible(file, showHiddenFiles) && (file.isDirectory() || "xml".equals(file.getExtension()) || file.getFileType() == FileTypes.ARCHIVE);
}
@Override
public boolean isFileSelectable(VirtualFile file) {
return file.getFileType() == StdFileTypes.XML;
}
};
descriptor.setDescription("Please select the configuration file (usually named IntelliLang.xml) to import.");
descriptor.setTitle("Import Configuration");
descriptor.putUserData(LangDataKeys.MODULE_CONTEXT, LangDataKeys.MODULE.getData(dataContext));
final SplitterProportionsData splitterData = new SplitterProportionsDataImpl();
splitterData.externalizeFromDimensionService("IntelliLang.ImportSettingsKey.SplitterProportions");
final VirtualFile file = FileChooser.chooseFile(descriptor, myProject, null);
if (file == null)
return;
try {
final Configuration cfg = Configuration.load(file.getInputStream());
if (cfg == null) {
Messages.showWarningDialog(myProject, "The selected file does not contain any importable configuration.", "Nothing to Import");
return;
}
final CfgInfo info = getDefaultCfgInfo();
final Map<String, Set<InjInfo>> currentMap = ContainerUtil.classify(info.injectionInfos.iterator(), new Convertor<InjInfo, String>() {
public String convert(final InjInfo o) {
return o.injection.getSupportId();
}
});
final List<BaseInjection> originalInjections = new ArrayList<>();
final List<BaseInjection> newInjections = new ArrayList<>();
for (String supportId : InjectorUtils.getActiveInjectionSupportIds()) {
ArrayList<InjInfo> list = new ArrayList<>(ObjectUtils.notNull(currentMap.get(supportId), Collections.<InjInfo>emptyList()));
final List<BaseInjection> currentInjections = getInjectionList(list);
final List<BaseInjection> importingInjections = cfg.getInjections(supportId);
if (currentInjections == null) {
newInjections.addAll(importingInjections);
} else {
Configuration.importInjections(currentInjections, importingInjections, originalInjections, newInjections);
}
}
info.replace(originalInjections, newInjections);
myInjectionsTable.getListTableModel().setItems(getInjInfoList(myInfos));
final int n = newInjections.size();
if (n > 1) {
Messages.showInfoMessage(myProject, n + " entries have been successfully imported", "Import Successful");
} else if (n == 1) {
Messages.showInfoMessage(myProject, "One entry has been successfully imported", "Import Successful");
} else {
Messages.showInfoMessage(myProject, "No new entries have been imported", "Import");
}
} catch (Exception ex) {
Configuration.LOG.error(ex);
final String msg = ex.getLocalizedMessage();
Messages.showErrorDialog(myProject, msg != null && msg.length() > 0 ? msg : ex.toString(), "Import Failed");
}
}
use of com.intellij.openapi.ui.SplitterProportionsData in project intellij-community by JetBrains.
the class ContentChooser method createCenterPanel.
@Override
protected JComponent createCenterPanel() {
final int selectionMode = myAllowMultipleSelections ? ListSelectionModel.MULTIPLE_INTERVAL_SELECTION : ListSelectionModel.SINGLE_SELECTION;
myList.setSelectionMode(selectionMode);
if (myUseIdeaEditor) {
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
myList.setFont(scheme.getFont(EditorFontType.PLAIN));
Color fg = ObjectUtils.chooseNotNull(scheme.getDefaultForeground(), new JBColor(UIUtil::getListForeground));
Color bg = ObjectUtils.chooseNotNull(scheme.getDefaultBackground(), new JBColor(UIUtil::getListBackground));
myList.setForeground(fg);
myList.setBackground(bg);
}
new DoubleClickListener() {
@Override
protected boolean onDoubleClick(MouseEvent e) {
close(OK_EXIT_CODE);
return true;
}
}.installOn(myList);
MyListCellRenderer renderer = new MyListCellRenderer();
myList.setCellRenderer(renderer);
myList.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DELETE) {
int newSelectionIndex = -1;
for (Object o : myList.getSelectedValuesList()) {
int i = ((Item) o).index;
removeContentAt(myAllContents.get(i));
if (newSelectionIndex < 0) {
newSelectionIndex = i;
}
}
rebuildListContent();
if (myAllContents.isEmpty()) {
close(CANCEL_EXIT_CODE);
return;
}
newSelectionIndex = Math.min(newSelectionIndex, myAllContents.size() - 1);
myList.setSelectedIndex(newSelectionIndex);
} else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
doOKAction();
} else {
SpeedSearchSupply supply = SpeedSearchSupply.getSupply(myList);
if (supply != null && supply.isPopupActive())
return;
char aChar = e.getKeyChar();
if (aChar >= '0' && aChar <= '9') {
int idx = aChar == '0' ? 9 : aChar - '1';
if (idx < myAllContents.size()) {
myList.setSelectedIndex(idx);
e.consume();
doOKAction();
}
}
}
}
});
mySplitter.setFirstComponent(ListWithFilter.wrap(myList, ScrollPaneFactory.createScrollPane(myList), o -> o.getShortText(renderer.previewChars)));
mySplitter.setSecondComponent(new JPanel());
mySplitter.getFirstComponent().addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
FontMetrics metrics = myList.getFontMetrics(myList.getFont());
int charWidth = metrics.charWidth('m');
renderer.previewChars = myList.getParent().getParent().getWidth() / charWidth + 10;
}
});
rebuildListContent();
ScrollingUtil.installActions(myList);
ScrollingUtil.ensureSelectionExists(myList);
updateViewerForSelection();
myList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (myUpdateAlarm.isDisposed())
return;
myUpdateAlarm.cancelAllRequests();
myUpdateAlarm.addRequest(() -> updateViewerForSelection(), 100);
}
});
mySplitter.setPreferredSize(JBUI.size(500, 500));
SplitterProportionsData d = new SplitterProportionsDataImpl();
d.externalizeToDimensionService(getClass().getName());
d.restoreSplitterProportions(mySplitter);
return mySplitter;
}
Aggregations