/// <summary>
        /// @serialData Default field.
        /// </summary>

        /*
         * Writes the contents of the perms field out as a Hashtable
         * in which the values are Vectors for
         * serialization compatibility with earlier releases.
         */
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException
        private void WriteObject(ObjectOutputStream @out)
        {
            // Don't call out.defaultWriteObject()

            // Copy perms into a Hashtable
            Dictionary <String, Vector <UnresolvedPermission> > permissions = new Dictionary <String, Vector <UnresolvedPermission> >(Perms.Size() * 2);

            // Convert each entry (List) into a Vector
            lock (this)
            {
                Set <Map_Entry <String, List <UnresolvedPermission> > > set = Perms.EntrySet();
                foreach (Map_Entry <String, List <UnresolvedPermission> > e in set)
                {
                    // Convert list into Vector
                    List <UnresolvedPermission>   list = e.Value;
                    Vector <UnresolvedPermission> vec  = new Vector <UnresolvedPermission>(list.Count);
                    lock (list)
                    {
                        vec.AddAll(list);
                    }

                    // Add to Hashtable being serialized
                    permissions.Put(e.Key, vec);
                }
            }

            // Write out serializable fields
            ObjectOutputStream.PutField pfields = @out.PutFields();
            pfields.Put("permissions", permissions);
            @out.WriteFields();
        }
Example #2
0
        /**
         * 指针移到上一页页首
         */
        private void pageUp()
        {
            Java.Lang.String strParagraph = new Java.Lang.String();
            Vector           lines        = new Vector(); // 页面行
            int paraSpace = 0;

            mPageLineCount = mVisibleHeight / (mFontSize + mLineSpace);
            while ((lines.Size() < mPageLineCount) && (curBeginPos > 0))
            {
                Vector paraLines  = new Vector();                   // 段落行
                byte[] parabuffer = readParagraphBack(curBeginPos); // 1.读取上一个段落

                curBeginPos -= parabuffer.Length;                   // 2.变换起始位置指针
                try
                {
                    strParagraph = new Java.Lang.String(parabuffer, charset);
                }
                catch (UnsupportedEncodingException e)
                {
                    e.PrintStackTrace();
                }
                strParagraph = new Java.Lang.String(strParagraph.ReplaceAll("\r\n", "  "));
                strParagraph = new Java.Lang.String(strParagraph.ReplaceAll("\n", " "));

                while (strParagraph.Length() > 0)
                { // 3.逐行添加到lines
                    int paintSize = mPaint.BreakText(strParagraph.ToString(), true, mVisibleWidth, null);
                    paraLines.Add(strParagraph.Substring(0, paintSize));
                    strParagraph = new Java.Lang.String(strParagraph.Substring(paintSize));
                }
                lines.AddAll(0, paraLines.ToArray());

                while (lines.Size() > mPageLineCount)
                { // 4.如果段落添加完,但是超出一页,则超出部分需删减
                    try
                    {
                        curBeginPos += (new Java.Lang.String(lines.Get(0).ToString())).GetBytes(charset).Length; // 5.删减行数同时起始位置指针也要跟着偏移
                        lines.Remove(0);
                    }
                    catch (UnsupportedEncodingException e)
                    {
                        e.PrintStackTrace();
                    }
                }
                curEndPos      = curBeginPos;                                             // 6.最后结束指针指向下一段的开始处
                paraSpace     += mLineSpace;
                mPageLineCount = (mVisibleHeight - paraSpace) / (mFontSize + mLineSpace); // 添加段落间距,实时更新容纳行数
            }
        }