在这篇文章中,我们将带领您了解重新设计实现CSipSimple呼叫记录分组功能的全貌,包括sip呼叫建立一般过程的相关情况。同时,我们还将为您介绍有关com.intellij.psi.impl.com
在这篇文章中,我们将带领您了解重新设计实现CSipSimple呼叫记录分组功能的全貌,包括sip呼叫建立一般过程的相关情况。同时,我们还将为您介绍有关com.intellij.psi.impl.compiled.ClsClassImpl的实例源码、com.intellij.psi.impl.file.PsiBinaryFileImpl的实例源码、com.intellij.psi.impl.file.PsiFileImplUtil的实例源码、com.intellij.psi.impl.file.PsiPackageImplementationHelper的实例源码的知识,以帮助您更好地理解这个主题。
本文目录一览:- 重新设计实现CSipSimple呼叫记录分组功能(sip呼叫建立一般过程)
- com.intellij.psi.impl.compiled.ClsClassImpl的实例源码
- com.intellij.psi.impl.file.PsiBinaryFileImpl的实例源码
- com.intellij.psi.impl.file.PsiFileImplUtil的实例源码
- com.intellij.psi.impl.file.PsiPackageImplementationHelper的实例源码
重新设计实现CSipSimple呼叫记录分组功能(sip呼叫建立一般过程)
CSipSimple 原有的分组功能只能针对连续相同被叫号码,如果中间有间隔,相同的号码就不会被分成一组。这个实现很弱,也失去了分组的意义。下面针对这块功能的设计实现做下简单记录。
1. 自己封装一个CursorLoader
这里取名为CalllogCursorLoader,在CallLogListFragment -> OnCreateLoader中:
// Loader
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CalllogCursorLoader(getActivity());
}
2. CalllogCursorLoader.java 代码:
package org.phoneos.db;
import org.phoneos.api.SipManager;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.CallLog;
import android.support.v4.content.AsyncTaskLoader;
public class CalllogCursorLoader extends AsyncTaskLoader<Cursor> {
final ForceLoadContentObserver mObserver;
private FastCursor fastCursor = null;
private Cursor mObserverCursor = null;
/**
* Creates an empty unspecified CursorLoader. You must follow this with
* calls to {[@link](http://my.oschina.net/u/393) #setUri(Uri)}, {[@link](http://my.oschina.net/u/393) #setSelection(String)}, etc to
* specify the query to perform.
*/
public CalllogCursorLoader(Context context) {
super(context);
mObserver = new ForceLoadContentObserver();
}
/* Runs on a worker thread */
@Override
public Cursor loadInBackground() {
String[] fields = new String[] { CallLog.Calls._ID,
CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL,
CallLog.Calls.CACHED_NUMBER_TYPE, CallLog.Calls.DURATION,
CallLog.Calls.DATE, CallLog.Calls.NEW, CallLog.Calls.NUMBER,
CallLog.Calls.TYPE, SipManager.CALLLOG_PROFILE_ID_FIELD };
try {
if (mObserverCursor != null) {
mObserverCursor.close();
mObserverCursor = null;
}
// get last inserted, a trick for observer data
mObserverCursor = getContext().getContentResolver().query(
SipManager.CALLLOG_URI, fields, null, null,
"date desc limit 1");
if (mObserverCursor != null) {
mObserverCursor.registerContentObserver(mObserver);
}
// if (fastCursor == null) {
Cursor cursor = getContext().getContentResolver().query(
SipManager.CALLLOG_URI, fields, null, null, "date asc");
fastCursor = new FastCursor(cursor);
cursor.close();
cursor = null;
// } else {
// fastCursor.addCursor(mObserverCursor);
// }
// int min = fastCursor.getCount();
// if (min > 100)
// min = 100;
// for (int i = 0; i < min; i++) {
// fastCursor.moveToPosition(i);
// Log.d("LOADER", i + ", " + fastCursor.getString(fastCursor.getColumnIndex(CallLog.Calls.NUMBER)));
// }
return fastCursor;
} finally {
}
}
/* Runs on the UI thread */
@Override
public void deliverResult(Cursor cursor) {
if (isReset()) {
if (fastCursor != null) {
fastCursor.close();
}
}
Cursor oldCursor = fastCursor;
fastCursor = (FastCursor)cursor;
if (isStarted()) {
super.deliverResult(cursor);
}
if (oldCursor != null && oldCursor != cursor && !oldCursor.isClosed()) {
oldCursor.close();
}
}
/**
* Starts an asynchronous load of the contacts list data. When the result is
* ready the callbacks will be called on the UI thread. If a previous load
* has been completed and is still valid the result may be passed to the
* callbacks immediately.
*
* Must be called from the UI thread
*/
@Override
protected void onStartLoading() {
if (fastCursor != null) {
deliverResult(fastCursor);
}
if (takeContentChanged() || fastCursor == null) {
forceLoad();
}
}
/**
* Must be called from the UI thread
*/
@Override
protected void onStopLoading() {
// Attempt to cancel the current load task if possible.
cancelLoad();
}
@Override
public void onCanceled(Cursor data) {
if (fastCursor != null && !fastCursor.isClosed()) {
fastCursor.close();
}
}
@Override
protected void onReset() {
super.onReset();
// Ensure the loader is stopped
onStopLoading();
if (fastCursor != null && !fastCursor.isClosed()) {
fastCursor.close();
}
fastCursor = null;
}
}
3. FastCursor.java 代码:
package org.phoneos.db;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import android.database.AbstractCursor;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.provider.CallLog;
import android.util.Log;
// Custom a cursor, better group call logs, better performace
public class FastCursor extends AbstractCursor {
private HashMap<String, ArrayList<Integer>> groupHashMap = new HashMap<String, ArrayList<Integer>>();
private ArrayList<ArrayList<Integer>> groupList;
private MatrixCursor mCursor;
public FastCursor(Cursor cursor) {
mCursor = new MatrixCursor(cursor.getColumnNames());
int capacity = cursor.getCount() >> 3;
if (capacity < 10)
capacity = 10;
groupList = new ArrayList<ArrayList<Integer>>(capacity);
addCursor(cursor);
}
// Cursor order by date asc
public void addCursor(Cursor cursor) {
for (int index = 0; index < cursor.getCount(); index++) {
cursor.moveToPosition(index);
Object[] columnValues = new Object[cursor.getColumnCount()];
columnValues[0] = cursor.getInt(0);
columnValues[1] = cursor.getString(1);
columnValues[2] = cursor.getString(2);
columnValues[3] = cursor.getInt(3);
columnValues[4] = cursor.getInt(4);
columnValues[5] = cursor.getLong(5);
columnValues[6] = cursor.getInt(6);
columnValues[7] = cursor.getString(7);
columnValues[8] = cursor.getInt(8);
columnValues[9] = cursor.getInt(9);
mCursor.addRow(columnValues);
String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
ArrayList<Integer> list = groupHashMap.get(number);
if (list == null) {
list = new ArrayList<Integer>(4);
groupHashMap.put(number, list);
}
else {
groupList.remove(list);
}
list.add(mCursor.getCount() - 1);
groupList.add(list);
}
// MUST reset mPos, workaroud for AbstractCursor.moveToPosition issue
mPos = -1;
Log.d("LOADER", groupHashMap.toString());
Log.d("LOADER", groupList.toString());
}
@Override
public boolean onMove(int oldPosition, int newPosition) {
int cursorStartPos = 0;
int length = groupList.size();
ArrayList<Integer> list = null;
for (int i = length - 1; i >= 0; i--) {
if (newPosition < (cursorStartPos + groupList.get(i).size())) {
list = groupList.get(i);
break;
}
cursorStartPos += groupList.get(i).size();
}
/* Move it to the right position */
if (list != null) {
int index = list.size() - (newPosition - cursorStartPos) - 1;
Boolean ret = mCursor.moveToPosition(list.get(index));
return ret;
}
return false;
}
// AbstractCursor implementation.
@Override
public void close() {
super.close();
mCursor.close();
groupHashMap.clear();
groupList.clear();
mCursor = null;
groupHashMap = null;
groupList = null;
}
@Override
public int getCount() {
return mCursor.getCount();
}
@Override
public String[] getColumnNames() {
return mCursor.getColumnNames();
}
@Override
public String getString(int column) {
return mCursor.getString(column);
}
@Override
public short getShort(int column) {
return mCursor.getShort(column);
}
@Override
public int getInt(int column) {
return mCursor.getInt(column);
}
@Override
public long getLong(int column) {
return mCursor.getLong(column);
}
@Override
public float getFloat(int column) {
return mCursor.getFloat(column);
}
@Override
public double getDouble(int column) {
return mCursor.getDouble(column);
}
@Override
public byte[] getBlob(int column) {
return mCursor.getBlob(column);
}
@Override
public int getType(int column) {
return mCursor.getType(column);
}
@Override
public boolean isNull(int column) {
return mCursor.isNull(column);
}
}
4. 修改CallLogGroupBuilder.java
+++ b/src/org/phoneos/ui/calllog/CallLogGroupBuilder.java
@@ -81,16 +81,17 @@ public class CallLogGroupBuilder {
final boolean sameNumber = equalNumbers(firstNumber, currentNumber);
final boolean shouldGroup;
- if (!sameNumber) {
- // Should only group with calls from the same number.
- shouldGroup = false;
- } else if ( firstCallType == Calls.MISSED_TYPE) {
- // Voicemail and missed calls should only be grouped with subsequent missed calls.
- shouldGroup = callType == Calls.MISSED_TYPE;
- } else {
- // Incoming and outgoing calls group together.
- shouldGroup = callType == Calls.INCOMING_TYPE || callType == Calls.OUTGOING_TYPE;
- }
+ shouldGroup = sameNumber;
com.intellij.psi.impl.compiled.ClsClassImpl的实例源码
@NotNull @Override public ResolveResult[] multiResolve(final boolean incompleteCode) { Project project = myElement.getProject(); final String enumLiteralJavaModelName = myElement.getText().replaceAll("\"","").toupperCase(); final PsiShortNamesCache psiShortNamesCache = PsiShortNamesCache.getInstance(project); final PsiField[] javaEnumLiteralFields = psiShortNamesCache.getFieldsByName( enumLiteralJavaModelName,GlobalSearchScope.allScope(project) ); final Set<PsiField> enumFields = stream(javaEnumLiteralFields) .filter(literal -> literal.getParent() != null) .filter(literal -> literal.getParent() instanceof ClsClassImpl) .filter(literal -> ((ClsClassImpl) literal.getParent()).isEnum()) .collect(Collectors.toSet()); return PsiElementResolveResult.createResults(enumFields); }
@NotNull @Override public PsiElement getClsFileNavigationElement(PsiJavaFile clsFile) { PsiClass[] classes = clsFile.getClasses(); if (classes.length == 0) return clsFile; String sourceFileName = ((ClsClassImpl)classes[0]).getSourceFileName(); String packageName = clsFile.getPackageName(); String relativePath = packageName.isEmpty() ? sourceFileName : packageName.replace('.','/') + '/' + sourceFileName; ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(clsFile.getProject()); for (OrderEntry orderEntry : index.getorderEntriesForFile(clsFile.getContainingFile().getVirtualFile())) { if (!(orderEntry instanceof LibraryOrSdkOrderEntry)) continue; for (VirtualFile root : orderEntry.getFiles(OrderRoottype.soURCES)) { VirtualFile source = root.findFileByRelativePath(relativePath); if (source != null && source.isValid()) { PsiFile psiSource = clsFile.getManager().findFile(source); if (psiSource instanceof PsiClassOwner) { return psiSource; } } } } return clsFile; }
@Override public PsiElement getClsFileNavigationElement(PsiJavaFile clsFile) { String packageName = clsFile.getPackageName(); PsiClass[] classes = clsFile.getClasses(); if (classes.length == 0) return clsFile; String sourceFileName = ((ClsClassImpl)classes[0]).getSourceFileName(); String relativeFilePath = packageName.isEmpty() ? sourceFileName : packageName.replace('.','/') + '/' + sourceFileName; final VirtualFile vFile = clsFile.getContainingFile().getVirtualFile(); ProjectFileIndex projectFileIndex = ProjectFileIndex.SERVICE.getInstance(clsFile.getProject()); final List<OrderEntry> orderEntries = projectFileIndex.getorderEntriesForFile(vFile); for (OrderEntry orderEntry : orderEntries) { VirtualFile[] files = orderEntry.getFiles(OrderRoottype.soURCES); for (VirtualFile file : files) { VirtualFile source = file.findFileByRelativePath(relativeFilePath); if (source != null) { PsiFile psiSource = clsFile.getManager().findFile(source); if (psiSource instanceof PsiClassOwner) { return psiSource; } } } } return clsFile; }
private PsiClass findPsiClassByName(String originalQName,@Nullable Consumer<ClsClassImpl> altClsProcessor) { PsiClass psiClass = null; // first check alternative jre if any Sdk alternativeJre = myDebugProcess.getSession().getAlternativeJre(); if(alternativeJre != null) { psiClass = findClass(myDebugProcess.getProject(),originalQName,AlternativeJreClassFinder.getSearchScope(alternativeJre)); if(psiClass instanceof ClsClassImpl && altClsProcessor != null) { //try to find sources altClsProcessor.accept((ClsClassImpl) psiClass); } } if(psiClass == null) { psiClass = findClass(myDebugProcess.getProject(),myDebugProcess.getSearchScope()); } return psiClass; }
@Nullable private PsiFile findAlternativeJreSourceFile(ClsClassImpl psiClass) { String sourceFileName = psiClass.getSourceFileName(); String packageName = ((PsiClassOwner) psiClass.getContainingFile()).getPackageName(); String relativePath = packageName.isEmpty() ? sourceFileName : packageName.replace('.','/') + '/' + sourceFileName; Sdk alternativeJre = myDebugProcess.getSession().getAlternativeJre(); if(alternativeJre != null) { for(VirtualFile file : AlternativeJreClassFinder.getSourceRoots(alternativeJre)) { VirtualFile source = file.findFileByRelativePath(relativePath); if(source != null && source.isValid()) { PsiFile psiSource = psiClass.getManager().findFile(source); if(psiSource instanceof PsiClassOwner) { return psiSource; } } } } return null; }
private static boolean processCyclicDependence(PsiClass aClass,Set<PsiClass> classes) { if (!classes.add(aClass)) { return aClass.isInterface() || CommonClassNames.JAVA_LANG_OBJECT.equals(aClass.getQualifiedname()); } if (aClass instanceof ClsClassImpl) return true; //optimization for (PsiClass psiClass : aClass.getSupers()) { if (!processCyclicDependence(psiClass,classes)) { return false; } } return true; }
@Contract("null -> false") public static boolean isTrait(@Nullable PsiClass containingClass) { return containingClass instanceof GrTypeDeFinition && ((GrTypeDeFinition)containingClass).isTrait() || containingClass instanceof ClsClassImpl && containingClass.isInterface() && AnnotationUtil.isAnnotated(containingClass,"groovy.transform.Trait",false); }
public static PsiMethod createTraitMethodFromCompiledHelperMethod(final PsiMethod compiledMethod,final ClsClassImpl trait) { assert compiledMethod.getParameterList().getParametersCount() > 0; final GrLightMethodBuilder result = new GrLightMethodBuilder(compiledMethod.getManager(),compiledMethod.getName()); result.setoriginInfo("via @Trait"); result.addModifier(PsiModifier.STATIC); for (PsiTypeParameter parameter : compiledMethod.getTypeParameters()) { result.getTypeParameterList().addParameter(parameter); } final PsiTypeVisitor<PsiType> corrector = createCorrector(compiledMethod,trait); final PsiParameter[] methodParameters = compiledMethod.getParameterList().getParameters(); for (int i = 1; i < methodParameters.length; i++) { final PsiParameter originalParameter = methodParameters[i]; final PsiType correctedType = originalParameter.getType().accept(corrector); result.addParameter(originalParameter.getName(),correctedType,false); } for (PsiClasstype type : compiledMethod.getThrowsList().getReferencedTypes()) { final PsiType correctedType = type.accept(corrector); result.getThrowsList().addReference(correctedType instanceof PsiClasstype ? (PsiClasstype)correctedType : type); } { final PsiType originalType = compiledMethod.getReturnType(); result.setReturnType(originalType == null ? null : originalType.accept(corrector)); } final PsiClass traitSource = trait.getSourceMirrorClass(); final PsiMethod sourceMethod = traitSource == null ? null : traitSource.findMethodBySignature(result,false); result.setNavigationElement(sourceMethod != null ? sourceMethod : compiledMethod); return result; }
public static Collection<PsiMethod> getCompiledTraitConcreteMethods(@NotNull final ClsClassImpl trait) { return CachedValuesManager.getCachedValue(trait,new CachedValueProvider<Collection<PsiMethod>>() { @Nullable @Override public Result<Collection<PsiMethod>> compute() { final Collection<PsiMethod> result = ContainerUtil.newArrayList(); doCollectCompiledTraitMethods(trait,result); return Result.create(result,trait); } }); }
@Nullable private Result<PsiFile> getSourceFileResult(ClsFileImpl clsFile,VirtualFile root) { // This code is adapted from JavaPsiImplementationHelperImpl#getClsFileNavigationElement PsiClass[] classes = clsFile.getClasses(); if (classes.length == 0) { return null; } String sourceFileName = ((ClsClassImpl) classes[0]).getSourceFileName(); String packageName = clsFile.getPackageName(); String relativePath = packageName.isEmpty() ? sourceFileName : packageName.replace('.','/') + '/' + sourceFileName; VirtualFile source = root.findFileByRelativePath(relativePath); if (source != null && source.isValid()) { // Since we have an actual source jar tracked down,use that source jar as the modification // tracker. This means the result will continue to be cached unless that source jar changes. // If we didn't find a source jar,we use a modification tracker that invalidates on every // Blaze sync,which is less efficient. PsiFile psiSource = clsFile.getManager().findFile(source); if (psiSource instanceof PsiClassOwner) { return Result.create(psiSource,source); } return Result.create(null,source); } return null; }
private static boolean processCyclicDependence(PsiClass aClass,classes)) { return false; } } return true; }
@Override public PsiElement getClsFileNavigationElement(PsiJavaFile clsFile) { PsiClass[] classes = clsFile.getClasses(); if(classes.length == 0) { return clsFile; } String sourceFileName = ((ClsClassImpl) classes[0]).getSourceFileName(); String packageName = clsFile.getPackageName(); String relativePath = packageName.isEmpty() ? sourceFileName : packageName.replace('.','/') + '/' + sourceFileName; ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(clsFile.getProject()); for(OrderEntry orderEntry : index.getorderEntriesForFile(clsFile.getContainingFile().getVirtualFile())) { if(!(orderEntry instanceof OrderEntryWithTracking)) { continue; } for(VirtualFile root : orderEntry.getFiles(SourcesOrderRoottype.getInstance())) { VirtualFile source = root.findFileByRelativePath(relativePath); if(source != null && source.isValid()) { PsiFile psiSource = clsFile.getManager().findFile(source); if(psiSource instanceof PsiClassOwner) { return psiSource; } } } } return clsFile; }
public void actionPerformed(AnActionEvent event) { String projectPath = StringUtils.EMPTY; try { //todo need check if need module. UserConfigService.loadUserConfig(ProjectHelper.getProjectPath(event)); projectPath = ProjectHelper.getProjectPath(event); Project project = event.getProject(); Editor editor = event.getData(LangDataKeys.EDITOR); PsiFile currentFile = event.getData(LangDataKeys.PSI_FILE); CaretModel caretModel = editor.getCaretModel(); LogicalPosition oldLogicPos = caretModel.getLogicalPosition(); String text = currentFile.getText(); List<String> lines = Splitter.on("\n").splitToList(text); PojoLine pojo = getCursorLine(lines,oldLogicPos); PsiDirectory containingDirectory = currentFile.getContainingDirectory(); // HintManager.getInstance().showinformationHint(editor,"success"); String dir = containingDirectory.getVirtualFile().getCanonicalPath() + GenCodeResponseHelper.getPathSplitter() + currentFile.getName(); AutoCodingRequest request = new AutoCodingRequest(); request.setRequestType("AutoCoding"); request.setCodingType("Setter"); ServerRequestHelper.fillCommonField(request); if (pojo != null) { request.setPojoName(pojo.getClassName()); LogicalPosition newStatementPos = new LogicalPosition(pojo.getLineNumber(),pojo.getLinestartPos() + 1); LogicalPosition insertPos = new LogicalPosition(pojo.getLineNumber() + 1,0 ); caretModel.movetoLogicalPosition(newStatementPos); PsiElement currentFileElement = event.getData(LangDataKeys.PSI_ELEMENT); if (currentFileElement instanceof PsiClassImpl || currentFileElement instanceof ClsClassImpl) { // Integer trueOffSet = getoffset(pojo,dir); // if(trueOffSet != 0){ // offset = trueOffSet; // } Document document = PsiDocumentManager.getInstance(event.getProject()).getDocument(currentFile); caretModel.movetoLogicalPosition(insertPos); Integer offset = caretModel.getoffset(); String insert = insertSetter(project,pojo,document,currentFileElement,offset); request.setInsert(insert); // SettingService.getSetting().setLastInsertPos(offset); // SettingService.getSetting().setLastInsertLength(setter.length()); } } // VirtualFileManager.getInstance().syncRefresh(); // ApplicationManager.getApplication().saveAll(); caretModel.movetoLogicalPosition(oldLogicPos); SendToServerService.post(project,request); } catch (Throwable ignored) { LOGGER.error("actionPerformed :{}",ignored); }finally { LoggerWrapper.saveAllLogs(projectPath); SettingService.updateLastRunTime(); } }
com.intellij.psi.impl.file.PsiBinaryFileImpl的实例源码
@Nullable protected PsiFile createFile(@NotNull Project project,@NotNull VirtualFile file,@NotNull FileType fileType) { if (fileType.isBinary() || file.is(VFileProperty.SPECIAL)) { return new PsiBinaryFileImpl((PsiManagerImpl)getManager(),this); } if (!isTooLargeForIntelligence(file)) { final PsiFile psiFile = createFile(getBaseLanguage()); if (psiFile != null) return psiFile; } if (isTooLargeForContentLoading(file)) { return new PsiLargeFileImpl((PsiManagerImpl)getManager(),this); } return new PsiPlainTextFileImpl(this); }
@Nullable protected PsiFile createFile(@NotNull Project project,this); } return new PsiPlainTextFileImpl(this); }
@Nullable protected PsiFile createFile(@Nonnull Project project,@Nonnull VirtualFile file,@Nonnull FileType fileType) { if (fileType.isBinary() || file.is(VFileProperty.SPECIAL)) { return SingleRootFileViewProvider.isTooLargeForContentLoading(file) ? new PsiLargeBinaryFileImpl((PsiManagerImpl)getManager(),this) : new PsiBinaryFileImpl((PsiManagerImpl)getManager(),this); } if (!SingleRootFileViewProvider.isTooLargeForIntelligence(file)) { final PsiFile psiFile = createFile(getBaseLanguage()); if (psiFile != null) return psiFile; } if (SingleRootFileViewProvider.isTooLargeForContentLoading(file)) { return new PsiLargeTextFileImpl(this); } return new PsiPlainTextFileImpl(this); }
@Override protected PsiFile createFile(@NotNull Project project,@NotNull FileType fileType) { FileIndexFacade fileIndex = ServiceManager.getService(project,FileIndexFacade.class); if(!fileIndex.isInLibraryClasses(file) && fileIndex.isInSource(file) || fileIndex.isExcludedFile(file)) { return new PsiBinaryFileImpl((PsiManagerImpl) getManager(),this); } // skip inner,anonymous,missing and corrupted classes try { if(!isInnerClass(file)) { return new ClsFileImpl(this); } } catch(Exception e) { Logger.getInstance(ClassFileViewProvider.class).debug(file.getPath(),e); } return null; }
com.intellij.psi.impl.file.PsiFileImplUtil的实例源码
@requiredWriteAction @Override public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { checkSetName(name); doClearCaches("setName"); return PsiFileImplUtil.setName(this,name); }
@Override public PsiElement setName(@NotNull String name) throws IncorrectOperationException { checkSetName(name); doClearCaches("setName"); return PsiFileImplUtil.setName(this,name); }
@Override public void checkSetName(String name) throws IncorrectOperationException { if (!getViewProvider().isEventSystemEnabled()) return; PsiFileImplUtil.checkSetName(this,name); }
@Override public void delete() throws IncorrectOperationException { checkDelete(); PsiFileImplUtil.doDelete(this); }
@Override public PsiElement setName(@NotNull String name) throws IncorrectOperationException { checkSetName(name); subtreeChanged(); return PsiFileImplUtil.setName(this,name); }
@Override public void checkSetName(String name) throws IncorrectOperationException { if (!getViewProvider().isEventSystemEnabled()) return; PsiFileImplUtil.checkSetName(this,name); }
@Override public PsiElement setName(@NotNull String name) throws IncorrectOperationException { checkSetName(name); doClearCaches(); return PsiFileImplUtil.setName(this,name); }
@Override public void checkSetName(String name) throws IncorrectOperationException { if (!getViewProvider().isEventSystemEnabled()) return; PsiFileImplUtil.checkSetName(this,name); }
@Override public void delete() throws IncorrectOperationException { checkDelete(); PsiFileImplUtil.doDelete(this); }
@Override public PsiElement setName(@NotNull String name) throws IncorrectOperationException { checkSetName(name); subtreeChanged(); return PsiFileImplUtil.setName(this,name); }
@Override public void checkSetName(String name) throws IncorrectOperationException { if (!getViewProvider().isEventSystemEnabled()) return; PsiFileImplUtil.checkSetName(this,name); }
@Override public void checkSetName(String name) throws IncorrectOperationException { if (!getViewProvider().isEventSystemEnabled()) return; PsiFileImplUtil.checkSetName(this,name); }
@Override public void delete() throws IncorrectOperationException { checkDelete(); PsiFileImplUtil.doDelete(this); }
@Override public PsiElement setName(@Nonnull String name) throws IncorrectOperationException { checkSetName(name); subtreeChanged(); return PsiFileImplUtil.setName(this,name); }
@Override public void checkSetName(String name) throws IncorrectOperationException { if (!getViewProvider().isEventSystemEnabled()) return; PsiFileImplUtil.checkSetName(this,name); }
@Override public void delete() throws IncorrectOperationException { checkDelete(); PsiFileImplUtil.doDelete(this); }
com.intellij.psi.impl.file.PsiPackageImplementationHelper的实例源码
public JavaCoreApplicationEnvironment(disposable parentdisposable) { super(parentdisposable); registerFileType(JavaClassFileType.INSTANCE,"class"); registerFileType(JavaFileType.INSTANCE,"java"); registerFileType(ArchiveFileType.INSTANCE,"jar;zip"); addExplicitExtension(FileTypeFileViewProviders.INSTANCE,JavaClassFileType.INSTANCE,new ClassFileViewProviderFactory()); addExplicitExtension(BinaryFileStubBuilders.INSTANCE,new ClassFileStubBuilder()); addExplicitExtension(LanguageASTFactory.INSTANCE,JavaLanguage.INSTANCE,new CoreJavaASTFactory()); addExplicitExtension(LanguageParserDeFinitions.INSTANCE,new JavaParserDeFinition()); addExplicitExtension(LanguageConstantExpressionEvaluator.INSTANCE,new PsiExpressionEvaluator()); registerExtensionPoint(Extensions.getRootArea(),ClsstubBuilderFactory.EP_NAME,ClsstubBuilderFactory.class); registerExtensionPoint(Extensions.getRootArea(),PsiAugmentProvider.EP_NAME,PsiAugmentProvider.class); registerExtensionPoint(Extensions.getRootArea(),JavaMainMethodProvider.EP_NAME,JavaMainMethodProvider.class); addExtension(ClsstubBuilderFactory.EP_NAME,new DefaultClsstubBuilderFactory()); myApplication.registerService(PsiPackageImplementationHelper.class,new CorePsiPackageImplementationHelper()); myApplication.registerService(EmptySubstitutor.class,new EmptySubstitutorImpl()); myApplication.registerService(JavaDirectoryService.class,createJavaDirectoryService()); myApplication.registerService(JavaVersionService.class,new JavaVersionService()); addExplicitExtension(ItemPresentationProviders.INSTANCE,PsiPackage.class,new PackagePresentationProvider()); addExplicitExtension(ItemPresentationProviders.INSTANCE,PsiClass.class,new ClasspresentationProvider()); addExplicitExtension(ItemPresentationProviders.INSTANCE,PsiMethod.class,new MethodPresentationProvider()); addExplicitExtension(ItemPresentationProviders.INSTANCE,PsiField.class,new FieldPresentationProvider()); addExplicitExtension(ItemPresentationProviders.INSTANCE,PsiLocalVariable.class,new VariablePresentationProvider()); addExplicitExtension(ItemPresentationProviders.INSTANCE,PsiParameter.class,new VariablePresentationProvider()); }
public JavaCoreApplicationEnvironment(disposable parentdisposable) { super(parentdisposable); registerFileType(JavaClassFileType.INSTANCE,"java"); registerFileType(JararchiveFileType.INSTANCE,"jar"); addExplicitExtension(FileTypeFileViewProviders.INSTANCE,new ClassFileStubBuilder()); addExplicitExtension(LanguageParserDeFinitions.INSTANCE,JavaMainMethodProvider.class); myApplication.registerService(PsiPackageImplementationHelper.class,PsiJavaPackage.class,new VariablePresentationProvider()); }
public JavaCoreApplicationEnvironment(@NotNull disposable parentdisposable) { super(parentdisposable); registerFileType(JavaClassFileType.INSTANCE,"jar;zip"); registerFileType(PlainTextFileType.INSTANCE,"txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess"); addExplicitExtension(LanguageASTFactory.INSTANCE,PlainTextLanguage.INSTANCE,new PlainTextASTFactory()); addExplicitExtension(LanguageParserDeFinitions.INSTANCE,new PlainTextParserDeFinition()); addExplicitExtension(FileTypeFileViewProviders.INSTANCE,new PsiExpressionEvaluator()); addExtension(ContainerProvider.EP_NAME,new JavaContainerProvider()); myApplication.registerService(PsiPackageImplementationHelper.class,new VariablePresentationProvider()); registerapplicationservice(JavaCodeFoldingSettings.class,new JavaCodeFoldingSettingsBase()); addExplicitExtension(LanguageFolding.INSTANCE,new JavaFoldingBuilderBase() { @Override protected boolean shouldShowExplicitLambdaType(PsiAnonymousClass anonymousClass,PsiNewExpression expression) { return false; } @Override protected boolean isBelowRightMargin(Project project,int lineLength) { return false; } }); registerapplicationExtensionPoint(SuperMethodsSearch.EP_NAME,QueryExecutor.class); addExtension(SuperMethodsSearch.EP_NAME,new MethodSuperSearcher()); }
今天关于重新设计实现CSipSimple呼叫记录分组功能和sip呼叫建立一般过程的介绍到此结束,谢谢您的阅读,有关com.intellij.psi.impl.compiled.ClsClassImpl的实例源码、com.intellij.psi.impl.file.PsiBinaryFileImpl的实例源码、com.intellij.psi.impl.file.PsiFileImplUtil的实例源码、com.intellij.psi.impl.file.PsiPackageImplementationHelper的实例源码等更多相关知识的信息可以在本站进行查询。
本文标签: