GVKun编程网logo

重新设计实现CSipSimple呼叫记录分组功能(sip呼叫建立一般过程)

14

在这篇文章中,我们将带领您了解重新设计实现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呼叫建立一般过程)

重新设计实现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的实例源码

com.intellij.psi.impl.compiled.ClsClassImpl的实例源码

项目:hybris-integration-intellij-idea-plugin    文件:HybrisEnumLiteralItemReference.java   
@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);
}
项目:intellij-ce-playground    文件:JavaPsiImplementationHelperImpl.java   
@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;
}
项目:tools-idea    文件:JavaPsiImplementationHelperImpl.java   
@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;
}
项目:consulo-java    文件:PositionManagerImpl.java   
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;
}
项目:consulo-java    文件:PositionManagerImpl.java   
@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;
}
项目:intellij-ce-playground    文件:CollectClassMembersUtil.java   
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;
}
项目:intellij-ce-playground    文件:GrTraitUtil.java   
@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);
}
项目:intellij-ce-playground    文件:GrTraitUtil.java   
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;
}
项目:intellij-ce-playground    文件:GrTraitUtil.java   
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);
    }
  });
}
项目:intellij    文件:BlazeSourceJarNavigationPolicy.java   
@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;
}
项目:tools-idea    文件:CollectClassMembersUtil.java   
private static boolean processCyclicDependence(PsiClass aClass,classes)) {
      return false;
    }
  }
  return true;
}
项目:consulo-java    文件:JavaPsiImplementationHelperImpl.java   
@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;
}
项目:codehelper.generator    文件:AutoCodingAction.java   
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的实例源码

com.intellij.psi.impl.file.PsiBinaryFileImpl的实例源码

项目:intellij-ce-playground    文件:SingleRootFileViewProvider.java   
@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);
}
项目:tools-idea    文件:SingleRootFileViewProvider.java   
@Nullable
protected PsiFile createFile(@NotNull Project project,this);
  }

  return new PsiPlainTextFileImpl(this);
}
项目:consulo    文件:AbstractFileViewProvider.java   
@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);
}
项目:consulo-java    文件:ClassFileViewProvider.java   
@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的实例源码

com.intellij.psi.impl.file.PsiFileImplUtil的实例源码

项目:consulo    文件:PsiFileImpl.java   
@requiredWriteAction
@Override
public PsiElement setName(@Nonnull String name) throws IncorrectOperationException {
  checkSetName(name);
  doClearCaches("setName");
  return PsiFileImplUtil.setName(this,name);
}
项目:intellij-ce-playground    文件:PsiFileImpl.java   
@Override
public PsiElement setName(@NotNull String name) throws IncorrectOperationException {
  checkSetName(name);
  doClearCaches("setName");
  return PsiFileImplUtil.setName(this,name);
}
项目:intellij-ce-playground    文件:PsiFileImpl.java   
@Override
public void checkSetName(String name) throws IncorrectOperationException {
  if (!getViewProvider().isEventSystemEnabled()) return;
  PsiFileImplUtil.checkSetName(this,name);
}
项目:intellij-ce-playground    文件:PsiFileImpl.java   
@Override
public void delete() throws IncorrectOperationException {
  checkDelete();
  PsiFileImplUtil.doDelete(this);
}
项目:intellij-ce-playground    文件:LightPsiFileImpl.java   
@Override
public PsiElement setName(@NotNull String name) throws IncorrectOperationException {
  checkSetName(name);
  subtreeChanged();
  return PsiFileImplUtil.setName(this,name);
}
项目:intellij-ce-playground    文件:LightPsiFileImpl.java   
@Override
public void checkSetName(String name) throws IncorrectOperationException {
  if (!getViewProvider().isEventSystemEnabled()) return;
  PsiFileImplUtil.checkSetName(this,name);
}
项目:tools-idea    文件:PsiFileImpl.java   
@Override
public PsiElement setName(@NotNull String name) throws IncorrectOperationException {
  checkSetName(name);
  doClearCaches();
  return PsiFileImplUtil.setName(this,name);
}
项目:tools-idea    文件:PsiFileImpl.java   
@Override
public void checkSetName(String name) throws IncorrectOperationException {
  if (!getViewProvider().isEventSystemEnabled()) return;
  PsiFileImplUtil.checkSetName(this,name);
}
项目:tools-idea    文件:PsiFileImpl.java   
@Override
public void delete() throws IncorrectOperationException {
  checkDelete();
  PsiFileImplUtil.doDelete(this);
}
项目:tools-idea    文件:LightPsiFileImpl.java   
@Override
public PsiElement setName(@NotNull String name) throws IncorrectOperationException {
  checkSetName(name);
  subtreeChanged();
  return PsiFileImplUtil.setName(this,name);
}
项目:tools-idea    文件:LightPsiFileImpl.java   
@Override
public void checkSetName(String name) throws IncorrectOperationException {
  if (!getViewProvider().isEventSystemEnabled()) return;
  PsiFileImplUtil.checkSetName(this,name);
}
项目:consulo    文件:PsiFileImpl.java   
@Override
public void checkSetName(String name) throws IncorrectOperationException {
  if (!getViewProvider().isEventSystemEnabled()) return;
  PsiFileImplUtil.checkSetName(this,name);
}
项目:consulo    文件:PsiFileImpl.java   
@Override
public void delete() throws IncorrectOperationException {
  checkDelete();
  PsiFileImplUtil.doDelete(this);
}
项目:consulo    文件:LightPsiFileImpl.java   
@Override
public PsiElement setName(@Nonnull String name) throws IncorrectOperationException {
  checkSetName(name);
  subtreeChanged();
  return PsiFileImplUtil.setName(this,name);
}
项目:consulo    文件:LightPsiFileImpl.java   
@Override
public void checkSetName(String name) throws IncorrectOperationException {
  if (!getViewProvider().isEventSystemEnabled()) return;
  PsiFileImplUtil.checkSetName(this,name);
}
项目:consulo-java    文件:ClsFileImpl.java   
@Override
public void delete() throws IncorrectOperationException
{
    checkDelete();
    PsiFileImplUtil.doDelete(this);
}

com.intellij.psi.impl.file.PsiPackageImplementationHelper的实例源码

com.intellij.psi.impl.file.PsiPackageImplementationHelper的实例源码

项目:tools-idea    文件:JavaCoreApplicationEnvironment.java   
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());
}
项目:consulo-java    文件:JavaCoreApplicationEnvironment.java   
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());
}
项目:intellij-ce-playground    文件:JavaCoreApplicationEnvironment.java   
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的实例源码等更多相关知识的信息可以在本站进行查询。

本文标签: