mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cleanup after adding postfix templates preview
This commit is contained in:
+41
-52
@@ -20,10 +20,11 @@ import com.intellij.codeInsight.intention.impl.config.TextDescriptor;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.PlainTextFileType;
|
||||
import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.ui.TitledSeparator;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -38,52 +39,60 @@ class PostfixDescriptionPanel implements Disposable {
|
||||
private JPanel myBeforePanel;
|
||||
private JEditorPane myDescriptionBrowser;
|
||||
|
||||
public PostfixDescriptionPanel() {
|
||||
initializeExamplePanel(myAfterPanel);
|
||||
initializeExamplePanel(myBeforePanel);
|
||||
}
|
||||
|
||||
public void reset(PostfixTemplateMetaData actionMetaData) {
|
||||
|
||||
public void reset(@NotNull PostfixTemplateMetaData actionMetaData) {
|
||||
|
||||
final TextDescriptor url = actionMetaData.getDescription();
|
||||
final String description = getDescription(url);
|
||||
myDescriptionBrowser.setText(description);
|
||||
|
||||
showUsages(myBeforePanel, ArrayUtil.getFirstElement(actionMetaData.getExampleUsagesBefore()));
|
||||
showUsages(myAfterPanel, ArrayUtil.getFirstElement(actionMetaData.getExampleUsagesAfter()));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getDescription(TextDescriptor url) {
|
||||
try {
|
||||
final TextDescriptor url = actionMetaData.getDescription();
|
||||
final String description = url == null ? "" : url.getText();
|
||||
myDescriptionBrowser.setText(description);
|
||||
|
||||
showUsages(myBeforePanel, ArrayUtil.getFirstElement(actionMetaData.getExampleUsagesBefore()));
|
||||
showUsages(myAfterPanel, ArrayUtil.getFirstElement(actionMetaData.getExampleUsagesAfter()));
|
||||
return url.getText();
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private void showUsages(final JPanel panel, @Nullable final TextDescriptor exampleUsage) throws IOException {
|
||||
boolean createMode = exampleUsage == null || panel.getComponents().length == 0;
|
||||
if (createMode) {
|
||||
panel.setLayout(new BorderLayout());
|
||||
panel.removeAll();
|
||||
}
|
||||
|
||||
private static void showUsages(@NotNull JPanel panel, @Nullable TextDescriptor exampleUsage) {
|
||||
String text = "";
|
||||
FileType fileType = PlainTextFileType.INSTANCE;
|
||||
if (exampleUsage != null) {
|
||||
final String name = exampleUsage.getFileName();
|
||||
final FileTypeManagerEx fileTypeManager = FileTypeManagerEx.getInstanceEx();
|
||||
final String extension = fileTypeManager.getExtension(name);
|
||||
final FileType fileType = fileTypeManager.getFileTypeByExtension(extension);
|
||||
|
||||
ActionUsagePanel actionUsagePanel;
|
||||
if (createMode) {
|
||||
actionUsagePanel = new ActionUsagePanel();
|
||||
Disposer.register(this, actionUsagePanel);
|
||||
try {
|
||||
text = exampleUsage.getText();
|
||||
String name = exampleUsage.getFileName();
|
||||
FileTypeManagerEx fileTypeManager = FileTypeManagerEx.getInstanceEx();
|
||||
String extension = fileTypeManager.getExtension(name);
|
||||
fileType = fileTypeManager.getFileTypeByExtension(extension);
|
||||
}
|
||||
else {
|
||||
actionUsagePanel = (ActionUsagePanel)panel.getComponent(0);
|
||||
}
|
||||
|
||||
actionUsagePanel.reset(exampleUsage.getText(), fileType);
|
||||
|
||||
if (createMode) {
|
||||
panel.add(actionUsagePanel);
|
||||
catch (IOException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
((ActionUsagePanel)panel.getComponent(0)).reset(text, fileType);
|
||||
panel.repaint();
|
||||
}
|
||||
|
||||
private void initializeExamplePanel(@NotNull JPanel panel) {
|
||||
panel.setLayout(new BorderLayout());
|
||||
ActionUsagePanel actionUsagePanel = new ActionUsagePanel();
|
||||
panel.add(actionUsagePanel);
|
||||
Disposer.register(this, actionUsagePanel);
|
||||
}
|
||||
|
||||
JPanel getComponent() {
|
||||
return myPanel;
|
||||
}
|
||||
@@ -91,24 +100,4 @@ class PostfixDescriptionPanel implements Disposable {
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
public void init(final int preferredWidth) {
|
||||
double height =
|
||||
(myDescriptionBrowser.getSize().getHeight() + myBeforePanel.getSize().getHeight() + myAfterPanel.getSize().getHeight()) / 3;
|
||||
Dimension newd = new Dimension(preferredWidth, (int)height);
|
||||
myDescriptionBrowser.setSize(newd);
|
||||
myDescriptionBrowser.setPreferredSize(newd);
|
||||
myDescriptionBrowser.setMaximumSize(newd);
|
||||
myDescriptionBrowser.setMinimumSize(newd);
|
||||
|
||||
myBeforePanel.setSize(newd);
|
||||
myBeforePanel.setPreferredSize(newd);
|
||||
myBeforePanel.setMaximumSize(newd);
|
||||
myBeforePanel.setMinimumSize(newd);
|
||||
|
||||
myAfterPanel.setSize(newd);
|
||||
myAfterPanel.setPreferredSize(newd);
|
||||
myAfterPanel.setMaximumSize(newd);
|
||||
myAfterPanel.setMinimumSize(newd);
|
||||
}
|
||||
}
|
||||
|
||||
+19
-4
@@ -24,6 +24,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.lang.UrlClassLoader;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
@@ -32,9 +33,18 @@ import java.util.List;
|
||||
|
||||
public final class PostfixTemplateMetaData extends BeforeAfterActionMetaData {
|
||||
|
||||
public static final String KEY = "$key";
|
||||
|
||||
private static final PostfixTemplateMetaData EMPTY_METADATA = new PostfixTemplateMetaData();
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.template.postfix.settings.PostfixTemplateMetaData");
|
||||
private static final String DESCRIPTION_FOLDER = "postfixTemplates";
|
||||
public static final String KEY = "$key";
|
||||
|
||||
@NotNull
|
||||
static PostfixTemplateMetaData createMetaData(@Nullable PostfixTemplate template) {
|
||||
if (template == null) return EMPTY_METADATA;
|
||||
|
||||
return new PostfixTemplateMetaData(template);
|
||||
}
|
||||
|
||||
private URL urlDir = null;
|
||||
private PostfixTemplate myTemplate;
|
||||
@@ -44,14 +54,19 @@ public final class PostfixTemplateMetaData extends BeforeAfterActionMetaData {
|
||||
myTemplate = template;
|
||||
}
|
||||
|
||||
PostfixTemplateMetaData() {
|
||||
super(EMPTY_DESCRIPTION, EMPTY_EXAMPLE, EMPTY_EXAMPLE);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public TextDescriptor[] getExampleUsagesBefore() {
|
||||
|
||||
return decorateTextDescription(super.getExampleUsagesBefore());
|
||||
return decorateTextDescriptor(super.getExampleUsagesBefore());
|
||||
}
|
||||
|
||||
private TextDescriptor[] decorateTextDescription(TextDescriptor[] before) {
|
||||
@NotNull
|
||||
private TextDescriptor[] decorateTextDescriptor(TextDescriptor[] before) {
|
||||
List<TextDescriptor> list = ContainerUtil.newArrayList();
|
||||
for (final TextDescriptor descriptor : before) {
|
||||
list.add(new TextDescriptor() {
|
||||
@@ -72,7 +87,7 @@ public final class PostfixTemplateMetaData extends BeforeAfterActionMetaData {
|
||||
@NotNull
|
||||
@Override
|
||||
public TextDescriptor[] getExampleUsagesAfter() {
|
||||
return decorateTextDescription(super.getExampleUsagesAfter());
|
||||
return decorateTextDescriptor(super.getExampleUsagesAfter());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-9
@@ -109,18 +109,11 @@ public class PostfixTemplatesConfigurable implements SearchableConfigurable, Edi
|
||||
resetDescriptionPanel();
|
||||
}
|
||||
});
|
||||
myDescriptionPanel.setVisible(false);
|
||||
}
|
||||
|
||||
private void resetDescriptionPanel() {
|
||||
assert myTemplatesListPanel != null;
|
||||
PostfixTemplate template = myTemplatesListPanel.getTemplate();
|
||||
if (null != template) {
|
||||
myDescriptionPanel.setVisible(true);
|
||||
myInnerPostfixDescriptionPanel.reset(new PostfixTemplateMetaData(template));
|
||||
}
|
||||
else {
|
||||
myDescriptionPanel.setVisible(false);
|
||||
if (null != myTemplatesListPanel) {
|
||||
myInnerPostfixDescriptionPanel.reset(PostfixTemplateMetaData.createMetaData(myTemplatesListPanel.getTemplate()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-2
@@ -38,6 +38,9 @@ import java.util.List;
|
||||
public abstract class BeforeAfterActionMetaData {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.intention.impl.config.BeforeAfterActionMetaData");
|
||||
|
||||
protected static final TextDescriptor[] EMPTY_EXAMPLE = new TextDescriptor[0];
|
||||
protected static final TextDescriptor EMPTY_DESCRIPTION = new PlainTextDescriptor("", "");
|
||||
|
||||
@NonNls protected static final String DESCRIPTION_FILE_NAME = "description.html";
|
||||
@NonNls static final String EXAMPLE_USAGE_URL_SUFFIX = ".template";
|
||||
@NonNls private static final String BEFORE_TEMPLATE_PREFIX = "before";
|
||||
@@ -65,7 +68,6 @@ public abstract class BeforeAfterActionMetaData {
|
||||
myDescription = description;
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
private static TextDescriptor[] retrieveURLs(@NotNull URL descriptionDirectory, @NotNull String prefix, @NotNull String suffix)
|
||||
throws MalformedURLException {
|
||||
@@ -113,7 +115,7 @@ public abstract class BeforeAfterActionMetaData {
|
||||
descriptionDirectory +
|
||||
"'" +
|
||||
(children == null ? "" : "; directory contents: " + Arrays.asList(children)), cause);
|
||||
return new TextDescriptor[0];
|
||||
return EMPTY_EXAMPLE;
|
||||
}
|
||||
return urls.toArray(new TextDescriptor[urls.size()]);
|
||||
}
|
||||
@@ -126,6 +128,7 @@ public abstract class BeforeAfterActionMetaData {
|
||||
}
|
||||
catch (MalformedURLException e) {
|
||||
LOG.error(e);
|
||||
return EMPTY_EXAMPLE;
|
||||
}
|
||||
}
|
||||
return myExampleUsagesBefore;
|
||||
@@ -139,6 +142,7 @@ public abstract class BeforeAfterActionMetaData {
|
||||
}
|
||||
catch (MalformedURLException e) {
|
||||
LOG.error(e);
|
||||
return EMPTY_EXAMPLE;
|
||||
}
|
||||
}
|
||||
return myExampleUsagesAfter;
|
||||
@@ -154,6 +158,7 @@ public abstract class BeforeAfterActionMetaData {
|
||||
}
|
||||
catch (MalformedURLException e) {
|
||||
LOG.error(e);
|
||||
return EMPTY_DESCRIPTION;
|
||||
}
|
||||
}
|
||||
return myDescription;
|
||||
|
||||
+2
-1
@@ -33,6 +33,7 @@ import com.intellij.openapi.fileTypes.ex.FileTypeManagerEx;
|
||||
import com.intellij.openapi.options.ShowSettingsUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.HyperlinkLabel;
|
||||
import com.intellij.ui.TitledSeparator;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
@@ -66,7 +67,7 @@ public class IntentionDescriptionPanel {
|
||||
public void reset(IntentionActionMetaData actionMetaData, String filter) {
|
||||
try {
|
||||
final TextDescriptor url = actionMetaData.getDescription();
|
||||
final String description = url == null ?
|
||||
final String description = StringUtil.isEmpty(url.getText()) ?
|
||||
CodeInsightBundle.message("under.construction.string") :
|
||||
SearchUtil.markup(url.getText(), filter);
|
||||
myDescriptionBrowser.setText(description);
|
||||
|
||||
Reference in New Issue
Block a user