use of org.eclipse.wst.css.core.internal.metamodel.util.CSSMetaModelUtil in project webtools.sourceediting by eclipse.
the class CSSProposalGeneratorForDeclarationValue method getCandidates.
/**
* getCandidates method comment.
*/
protected Iterator getCandidates() {
List candidates = new ArrayList();
// check should add semi-colon or not
checkSemiColon();
String name = getPropertyName();
if (name != null) {
CSSMetaModelUtil util = new CSSMetaModelUtil(fContext.getMetaModel());
Iterator i = Collections.EMPTY_LIST.iterator();
if (isFontFaceRule()) {
CSSMMDescriptor desc = util.getDescriptor(name);
if (desc != null) {
i = desc.getValues();
}
} else {
CSSMMProperty prop = util.getProperty(name);
if (prop != null) {
i = prop.getValues();
}
}
while (i.hasNext()) {
CSSMMNode val = (CSSMMNode) i.next();
String valueType = val.getType();
if (valueType == CSSMMNode.TYPE_KEYWORD) {
addString(candidates, val.toString());
} else if (valueType == CSSMMNode.TYPE_NUMBER) {
addNumber(candidates, (CSSMMNumber) val);
} else if (valueType == CSSMMNode.TYPE_FUNCTION) {
addFunction(candidates, (CSSMMFunction) val);
}
}
}
addImportant(candidates);
addSemiColon(candidates);
return candidates.iterator();
}
use of org.eclipse.wst.css.core.internal.metamodel.util.CSSMetaModelUtil in project webtools.sourceediting by eclipse.
the class CSSProposalGeneratorForAtmarkRule method getCandidateFontFaceRule.
/**
*/
private CSSCACandidate getCandidateFontFaceRule() {
CSSMetaModelUtil util = new CSSMetaModelUtil(fContext.getMetaModel());
if (!util.collectNodesByType(CSSMMNode.TYPE_FONT_FACE_RULE).hasNext()) {
return null;
}
int cursorPos = 0;
String ident = (fUseUpperCase) ? FONT_FACE.toUpperCase() : FONT_FACE.toLowerCase();
StringBuffer buf = new StringBuffer();
buf.append(ident);
// $NON-NLS-1$
buf.append(" ");
cursorPos = buf.length();
StringAndOffset sao;
sao = generateBraces();
buf.append(sao.fString);
cursorPos += sao.fOffset;
String text = buf.toString();
if (isMatch(text)) {
CSSCACandidate item = new CSSCACandidate();
item.setReplacementString(buf.toString());
item.setCursorPosition(cursorPos);
item.setDisplayString(ident);
item.setImageType(CSSImageType.RULE_FONTFACE);
return item;
} else {
return null;
}
}
use of org.eclipse.wst.css.core.internal.metamodel.util.CSSMetaModelUtil in project webtools.sourceediting by eclipse.
the class CSSProposalGeneratorForAtmarkRule method getCandidateCharsetRule.
/**
*/
private CSSCACandidate getCandidateCharsetRule() {
// check content model
CSSMetaModelUtil util = new CSSMetaModelUtil(fContext.getMetaModel());
if (!util.collectNodesByType(CSSMMNode.TYPE_CHARSET_RULE).hasNext()) {
return null;
}
// check if embedded or not
if (fContext.getModel().getStyleSheetType() == ICSSModel.EMBEDDED) {
return null;
}
// check if caret precede all other rules.
int offset = fContext.getCursorPos();
if (0 < offset) {
SelectionCollector trav = new SelectionCollector();
trav.setRegion(0, offset - 1);
trav.apply(fContext.getModel().getDocument());
Iterator i = trav.getSelectedNodes().iterator();
while (i.hasNext()) {
Object obj = i.next();
if (obj instanceof ICSSNode && !(obj instanceof ICSSDocument)) {
return null;
}
}
}
int cursorPos = 0;
String ident = (fUseUpperCase) ? CHARSET.toUpperCase() : CHARSET.toLowerCase();
StringBuffer buf = new StringBuffer();
buf.append(ident);
// $NON-NLS-1$
buf.append(" ");
cursorPos = buf.length();
StringAndOffset sao;
sao = generateQuotes();
buf.append(sao.fString);
cursorPos += sao.fOffset;
sao = generateSemicolon();
buf.append(sao.fString);
String text = buf.toString();
if (isMatch(text)) {
CSSCACandidate item = new CSSCACandidate();
item.setReplacementString(text);
item.setCursorPosition(cursorPos);
item.setDisplayString(ident);
item.setImageType(CSSImageType.RULE_CHARSET);
return item;
} else {
return null;
}
}
use of org.eclipse.wst.css.core.internal.metamodel.util.CSSMetaModelUtil in project webtools.sourceediting by eclipse.
the class CSSProposalGeneratorForAtmarkRule method getCandidatePageRule.
/**
*/
private CSSCACandidate getCandidatePageRule() {
CSSMetaModelUtil util = new CSSMetaModelUtil(fContext.getMetaModel());
if (!util.collectNodesByType(CSSMMNode.TYPE_PAGE_RULE).hasNext()) {
return null;
}
int cursorPos = 0;
String ident = (fUseUpperCase) ? PAGE.toUpperCase() : PAGE.toLowerCase();
StringBuffer buf = new StringBuffer();
buf.append(ident);
// $NON-NLS-1$
buf.append(" ");
cursorPos = buf.length();
StringAndOffset sao;
sao = generateBraces();
buf.append(sao.fString);
cursorPos += sao.fOffset;
String text = buf.toString();
if (isMatch(text)) {
CSSCACandidate item = new CSSCACandidate();
item.setReplacementString(buf.toString());
item.setCursorPosition(cursorPos);
item.setDisplayString(ident);
item.setImageType(CSSImageType.RULE_PAGE);
return item;
} else {
return null;
}
}
use of org.eclipse.wst.css.core.internal.metamodel.util.CSSMetaModelUtil in project webtools.sourceediting by eclipse.
the class CSSProposalGeneratorForDeclarationName method getCandidates.
/**
* getCandidates method comment.
*/
protected Iterator getCandidates() {
List candidates = new ArrayList();
Preferences preferences = CSSCorePlugin.getDefault().getPluginPreferences();
// $NON-NLS-1$
String preDelim = "";
for (int i = 0; i < preferences.getInt(CSSCorePreferenceNames.FORMAT_PROP_PRE_DELIM); i++) {
// $NON-NLS-1$
preDelim += ' ';
}
// $NON-NLS-1$
String postDelim = "";
for (int i = 0; i < preferences.getInt(CSSCorePreferenceNames.FORMAT_PROP_POST_DELIM); i++) {
// $NON-NLS-1$
postDelim += ' ';
}
ICSSNode targetNode = fContext.getTargetNode();
boolean bFontRule = false;
for (ICSSNode node = targetNode; node != null; node = node.getParentNode()) {
if (node instanceof org.w3c.dom.css.CSSFontFaceRule) {
bFontRule = true;
break;
}
}
List names = new ArrayList();
CSSMetaModelUtil util = new CSSMetaModelUtil(fContext.getMetaModel());
Iterator iNames = util.collectNodesByType((bFontRule) ? CSSMMNode.TYPE_DESCRIPTOR : CSSMMNode.TYPE_PROPERTY);
while (iNames.hasNext()) {
CSSMMNode node = (CSSMMNode) iNames.next();
names.add(node);
}
sortNames(names);
// Collections.sort(names);
boolean bAddColon = true;
if ((targetNode instanceof ICSSStyleRule || targetNode instanceof ICSSStyleDeclItem || targetNode instanceof ICSSStyleDeclaration) && fContext.targetHas(CSSRegionContexts.CSS_DECLARATION_SEPARATOR)) {
bAddColon = false;
}
Iterator i = names.iterator();
while (i.hasNext()) {
CSSMMNode node = (CSSMMNode) i.next();
String text = node.getName();
text = (preferences.getInt(CSSCorePreferenceNames.CASE_PROPERTY_NAME) == CSSCorePreferenceNames.UPPER) ? text.toUpperCase() : text.toLowerCase();
if (!isMatch(text)) {
continue;
}
int cursorPos = 0;
StringBuffer buf = new StringBuffer();
buf.append(text);
buf.append(preDelim);
cursorPos = buf.length();
if (bAddColon) {
// $NON-NLS-1$
buf.append(':');
buf.append(postDelim);
cursorPos += 1 + postDelim.length();
}
// if (! (targetNode instanceof ICSSStyleDeclItem)) {
// buf.append(';');//$NON-NLS-1$
// }
CSSCACandidate item = new CSSCACandidate();
item.setReplacementString(buf.toString());
item.setCursorPosition(cursorPos);
item.setDisplayString(text);
item.setMMNode(node);
item.setImageType(getCategoryImageType(node));
candidates.add(item);
}
return candidates.iterator();
}
Aggregations