⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selection.java

📁 开源的java 编辑器源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			else				startOffset += buffer.getLineStartOffset(startLine);			int endOffset = buffer.getOffsetOfVirtualColumn(endLine,				endColumn,width);			if(endOffset == -1)			{				extraEndVirt = endColumn - width[0];				endOffset = buffer.getLineEndOffset(endLine) - 1;			}			else				endOffset += buffer.getLineStartOffset(endLine);		} //}}}		//{{{ getStartColumn() method		public int getStartColumn(Buffer buffer)		{			int virtColStart = buffer.getVirtualWidth(startLine,				start - buffer.getLineStartOffset(startLine)) + extraStartVirt;			int virtColEnd = buffer.getVirtualWidth(endLine,				end - buffer.getLineStartOffset(endLine)) + extraEndVirt;			return Math.min(virtColStart,virtColEnd);		} //}}}		//{{{ getEndColumn() method		public int getEndColumn(Buffer buffer)		{			int virtColStart = buffer.getVirtualWidth(startLine,				start - buffer.getLineStartOffset(startLine)) + extraStartVirt;			int virtColEnd = buffer.getVirtualWidth(endLine,				end - buffer.getLineStartOffset(endLine)) + extraEndVirt;			return Math.max(virtColStart,virtColEnd);		} //}}}		//{{{ getStart() method		public int getStart(Buffer buffer, int line)		{			return getColumnOnOtherLine(buffer,line,				getStartColumn(buffer));		} //}}}		//{{{ getEnd() method		public int getEnd(Buffer buffer, int line)		{			return getColumnOnOtherLine(buffer,line,				getEndColumn(buffer));		} //}}}		//{{{ Package-private members		int extraStartVirt;		int extraEndVirt;		//{{{ getText() method		void getText(Buffer buffer, StringBuffer buf)		{			int start = getStartColumn(buffer);			int end = getEndColumn(buffer);			for(int i = startLine; i <= endLine; i++)			{				int lineStart = buffer.getLineStartOffset(i);				int lineLen = buffer.getLineLength(i);				int rectStart = buffer.getOffsetOfVirtualColumn(					i,start,null);				if(rectStart == -1)					rectStart = lineLen;				int rectEnd = buffer.getOffsetOfVirtualColumn(					i,end,null);				if(rectEnd == -1)					rectEnd = lineLen;				if(rectEnd < rectStart)					System.err.println(i + ":::" + start + ":" + end						+ " ==> " + rectStart + ":" + rectEnd);				buf.append(buffer.getText(lineStart + rectStart,					rectEnd - rectStart));				if(i != endLine)					buf.append('\n');			}		} //}}}		//{{{ setText() method		int setText(Buffer buffer, String text)		{			int startColumn = getStartColumn(buffer);			int endColumn = getEndColumn(buffer);			int[] total = new int[1];			int tabSize = buffer.getTabSize();			int maxWidth = 0;			int totalLines = 0;			ArrayList lines = new ArrayList();			//{{{ Split the text into lines			if(text != null)			{				int lastNewline = 0;				int currentWidth = startColumn;				for(int i = 0; i < text.length(); i++)				{					char ch = text.charAt(i);					if(ch == '\n')					{						totalLines++;						lines.add(text.substring(							lastNewline,i));						lastNewline = i + 1;						maxWidth = Math.max(maxWidth,currentWidth);						lines.add(new Integer(currentWidth));						currentWidth = startColumn;					}					else if(ch == '\t')						currentWidth += tabSize - (currentWidth % tabSize);					else						currentWidth++;				}				if(lastNewline != text.length())				{					totalLines++;					lines.add(text.substring(lastNewline));					lines.add(new Integer(currentWidth));					maxWidth = Math.max(maxWidth,currentWidth);				}			} //}}}			//{{{ Insert the lines into the buffer			int endOffset = 0;			int lastLine = Math.max(startLine + totalLines - 1,endLine);			for(int i = startLine; i <= lastLine; i++)			{				if(i == buffer.getLineCount())					buffer.insert(buffer.getLength(),"\n");				int lineStart = buffer.getLineStartOffset(i);				int lineLen = buffer.getLineLength(i);				int rectStart = buffer.getOffsetOfVirtualColumn(					i,startColumn,total);				int startWhitespace;				if(rectStart == -1)				{					startWhitespace = (startColumn - total[0]);					rectStart = lineLen;				}				else					startWhitespace = 0;				int rectEnd = buffer.getOffsetOfVirtualColumn(					i,endColumn,null);				if(rectEnd == -1)					rectEnd = lineLen;				buffer.remove(rectStart + lineStart,rectEnd - rectStart);				if(startWhitespace != 0)				{					buffer.insert(rectStart + lineStart,						MiscUtilities.createWhiteSpace(startWhitespace,0));				}				int endWhitespace;				if(totalLines == 0)				{					if(rectEnd == lineLen)						endWhitespace = 0;					else						endWhitespace = maxWidth - startColumn;				}				else				{					int index = 2 * ((i - startLine) % totalLines);					String str = (String)lines.get(index);					buffer.insert(rectStart + lineStart + startWhitespace,str);					if(rectEnd == lineLen)						endWhitespace = 0;					else					{						endWhitespace = maxWidth							- ((Integer)lines.get(index+1))							.intValue();					}					startWhitespace += str.length();				}				if(endWhitespace != 0)				{					buffer.insert(rectStart + lineStart						+ startWhitespace,						MiscUtilities.createWhiteSpace(endWhitespace,0));				}				endOffset = rectStart + lineStart					+ startWhitespace					+ endWhitespace;			} //}}}			//{{{ Move the caret down a line			if(text == null || text.length() == 0)				return end;			else				return endOffset;			//}}}		} //}}}		//{{{ contentInserted() method		boolean contentInserted(Buffer buffer, int startLine, int start,			int numLines, int length)		{			if(this.end < start)				return false;			this.end += length;			if(this.startLine > startLine)			{				this.start += length;				if(numLines != 0)				{					this.startLine = buffer.getLineOfOffset(						this.start);				}				return true;			}			int endVirtualColumn = buffer.getVirtualWidth(				this.endLine,end				- buffer.getLineStartOffset(this.endLine));			if(this.start == start)			{				int startVirtualColumn = buffer.getVirtualWidth(					this.startLine,start					- buffer.getLineStartOffset(					this.startLine));				this.start += length;				int newStartVirtualColumn					= buffer.getVirtualWidth(						startLine,start -						buffer.getLineStartOffset(						this.startLine));				int[] totalVirtualWidth = new int[1];				int newEnd = buffer.getOffsetOfVirtualColumn(					this.endLine,endVirtualColumn +					newStartVirtualColumn -					startVirtualColumn,					totalVirtualWidth);				if(newEnd != -1)				{					end = buffer.getLineStartOffset(						this.endLine) + newEnd;				}				else				{					end = buffer.getLineEndOffset(						this.endLine) - 1;					extraEndVirt = totalVirtualWidth[0]						- endVirtualColumn;				}			}			else if(this.start > start)			{				this.start += length;				if(numLines != 0)				{					this.startLine = buffer.getLineOfOffset(						this.start);				}			}			if(numLines != 0)				this.endLine = buffer.getLineOfOffset(this.end);			int newEndVirtualColumn = buffer.getVirtualWidth(				endLine,				end - buffer.getLineStartOffset(this.endLine));			if(startLine == this.endLine && extraEndVirt != 0)			{				extraEndVirt += (endVirtualColumn					- newEndVirtualColumn);			}			else if(startLine == this.startLine				&& extraStartVirt != 0)			{				extraStartVirt += (endVirtualColumn					- newEndVirtualColumn);			}			return true;		} //}}}		//{{{ contentRemoved() method		boolean contentRemoved(Buffer buffer, int startLine, int start,			int numLines, int length)		{			int end = start + length;			boolean changed = false;			if(this.start > start && this.start <= end)			{				this.start = start;				changed = true;			}			else if(this.start > end)			{				this.start -= length;				changed = true;			}			if(this.end > start && this.end <= end)			{				this.end = start;				changed = true;			}			else if(this.end > end)			{				this.end -= length;				changed = true;			}			if(changed && numLines != 0)			{				this.startLine = buffer.getLineOfOffset(this.start);				this.endLine = buffer.getLineOfOffset(this.end);			}			return changed;		} //}}}		//}}}		//{{{ Private members		//{{{ getColumnOnOtherLine() method		private int getColumnOnOtherLine(Buffer buffer, int line,			int col)		{			int returnValue = buffer.getOffsetOfVirtualColumn(				line,col,null);			if(returnValue == -1)				return buffer.getLineEndOffset(line) - 1;			else				return buffer.getLineStartOffset(line) + returnValue;		} //}}}		//}}}	} //}}}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -