use of com.intellij.uiDesigner.propertyInspector.properties.IntroStringProperty in project intellij-community by JetBrains.
the class FormSpellCheckingInspection method checkStringDescriptor.
@Override
protected void checkStringDescriptor(Module module, final IComponent component, final IProperty prop, final StringDescriptor descriptor, final FormErrorCollector collector) {
final String value = descriptor.getResolvedValue();
if (value == null) {
return;
}
final SpellCheckerManager manager = SpellCheckerManager.getInstance(module.getProject());
PlainTextSplitter.getInstance().split(value, TextRange.allOf(value), textRange -> {
final String word = textRange.substring(value);
if (manager.hasProblem(word)) {
final List<String> suggestions = manager.getSuggestions(word);
if (!suggestions.isEmpty() && prop instanceof IntroStringProperty) {
EditorQuickFixProvider changeToProvider = new EditorQuickFixProvider() {
@Override
public QuickFix createQuickFix(final GuiEditor editor, final RadComponent component1) {
return new PopupQuickFix<String>(editor, "Change to...", component1) {
@Override
public void run() {
ListPopup popup = JBPopupFactory.getInstance().createListPopup(getPopupStep());
popup.showUnderneathOf(component1.getDelegee());
}
@Override
public ListPopupStep<String> getPopupStep() {
return new BaseListPopupStep<String>("Select Replacement", suggestions) {
@Override
public PopupStep onChosen(String selectedValue, boolean finalChoice) {
FormInspectionUtil.updateStringPropertyValue(editor, component1, (IntroStringProperty) prop, descriptor, selectedValue);
return FINAL_CHOICE;
}
};
}
};
}
};
EditorQuickFixProvider acceptProvider = new EditorQuickFixProvider() {
@Override
public QuickFix createQuickFix(final GuiEditor editor, RadComponent component1) {
return new QuickFix(editor, "Save '" + word + "' to dictionary", component1) {
@Override
public void run() {
manager.acceptWordAsCorrect(word, editor.getProject());
}
};
}
};
collector.addError(getID(), component, prop, "Typo in word '" + word + "'", changeToProvider, acceptProvider);
} else {
collector.addError(getID(), component, prop, "Typo in word '" + word + "'");
}
}
});
}
use of com.intellij.uiDesigner.propertyInspector.properties.IntroStringProperty in project intellij-community by JetBrains.
the class RadComponent method getComponentTitle.
@Nullable
public String getComponentTitle() {
Palette palette = Palette.getInstance(getProject());
IntrospectedProperty[] props = palette.getIntrospectedProperties(this);
for (IntrospectedProperty prop : props) {
if (prop.getName().equals(SwingProperties.TEXT) && prop instanceof IntroStringProperty) {
StringDescriptor value = (StringDescriptor) prop.getValue(this);
if (value != null) {
return "\"" + value.getResolvedValue() + "\"";
}
}
}
if (this instanceof RadContainer) {
RadContainer container = (RadContainer) this;
StringDescriptor descriptor = container.getBorderTitle();
if (descriptor != null) {
if (descriptor.getResolvedValue() == null) {
descriptor.setResolvedValue(StringDescriptorManager.getInstance(getModule()).resolve(this, descriptor));
}
return "\"" + descriptor.getResolvedValue() + "\"";
}
}
if (getParent() instanceof RadTabbedPane) {
RadTabbedPane parentTabbedPane = (RadTabbedPane) getParent();
final StringDescriptor descriptor = parentTabbedPane.getChildTitle(this);
if (descriptor != null) {
if (descriptor.getResolvedValue() == null) {
descriptor.setResolvedValue(StringDescriptorManager.getInstance(getModule()).resolve(this, descriptor));
}
return "\"" + descriptor.getResolvedValue() + "\"";
} else {
parentTabbedPane.getChildTitle(this);
}
}
return null;
}
use of com.intellij.uiDesigner.propertyInspector.properties.IntroStringProperty in project intellij-community by JetBrains.
the class GuiEditor method refreshProperties.
private void refreshProperties() {
final Ref<Boolean> anythingModified = new Ref<>();
FormEditingUtil.iterate(myRootContainer, new FormEditingUtil.ComponentVisitor() {
public boolean visit(final IComponent component) {
final RadComponent radComponent = (RadComponent) component;
boolean componentModified = false;
for (IProperty prop : component.getModifiedProperties()) {
if (prop instanceof IntroStringProperty) {
IntroStringProperty strProp = (IntroStringProperty) prop;
componentModified = strProp.refreshValue(radComponent) || componentModified;
}
}
if (component instanceof RadContainer) {
componentModified = ((RadContainer) component).updateBorder() || componentModified;
}
if (component.getParentContainer() instanceof RadTabbedPane) {
componentModified = ((RadTabbedPane) component.getParentContainer()).refreshChildTitle(radComponent) || componentModified;
}
if (componentModified) {
anythingModified.set(Boolean.TRUE);
}
return true;
}
});
if (!anythingModified.isNull()) {
refresh();
DesignerToolWindow designerToolWindow = DesignerToolWindowManager.getInstance(this);
ComponentTree tree = designerToolWindow.getComponentTree();
if (tree != null)
tree.repaint();
PropertyInspector inspector = designerToolWindow.getPropertyInspector();
if (inspector != null)
inspector.synchWithTree(true);
}
}
Aggregations