Changeset 1746 for trunk


Ignore:
Timestamp:
01/10/12 15:09:03 (5 months ago)
Author:
jharrop
Message:

Support for DECIMAL_ZERO (01, 02, 03 ..) and basic support for "Legal" numbering

Location:
trunk/docx4j/src/main/java/org/docx4j/model/listnumbering
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/model/listnumbering/ListLevel.java

    r1745 r1746  
    333333                return converter.format(current).toUpperCase(); 
    334334        }                
     335        if (numFmt.equals( NumberFormat.DECIMAL_ZERO ) ) {                       
     336                NumberFormatDecimalZero converter = new NumberFormatDecimalZero();  
     337                return converter.format(current); 
     338        } 
    335339         
    336340        log.error("Unhandled numFmt: " + numFmt.name() ); 
     
    338342    } 
    339343     
     344    public String getCurrentValueUnformatted() 
     345    {            
     346        return this.counter.getCurrentValue().toString(); 
     347    }     
    340348     
    341349    /** 
     
    394402//                      this.numFmt = numFmt; 
    395403//              } 
    396         private NumberFormat getNumFmt() { 
     404        protected NumberFormat getNumFmt() { 
    397405                return numFmt; 
    398406        } 
  • trunk/docx4j/src/main/java/org/docx4j/model/listnumbering/ListNumberingDefinition.java

    r1745 r1746  
    9393import org.docx4j.XmlUtils; 
    9494import org.docx4j.wml.Lvl; 
     95import org.docx4j.wml.NumberFormat; 
    9596import org.docx4j.wml.Numbering; 
    9697import org.docx4j.wml.Numbering.Num.LvlOverride.StartOverride; 
     
    252253    public String GetCurrentNumberString(String level) 
    253254    { 
    254         String formatString = this.levels.get(level).getLevelText(); 
     255        ListLevel controllingLvl = this.levels.get( level );  
     256         
     257        boolean isLegal = controllingLvl.getJaxbAbstractLvl().getIsLgl() !=null  
     258                                                && controllingLvl.getJaxbAbstractLvl().getIsLgl().isVal(); 
     259        log.debug("isLegal: " + isLegal); 
     260         
     261        String formatString = controllingLvl.getLevelText(); 
    255262        log.debug("levelText: " + formatString ); 
    256263        StringBuilder result = new StringBuilder(); 
     
    269276                    // as it turns out, in the format String, the level is 1-based 
    270277                    int levelId =  Integer.parseInt(formatStringLevel) - 1; 
    271                     result.append(this.levels.get( Integer.toString(levelId) ).getCurrentValueFormatted() ); 
     278                    ListLevel lvl = this.levels.get( Integer.toString(levelId) ); 
     279                    if (level.equals("" + levelId) // this bit is the actual level  
     280                                && lvl.getNumFmt().equals( NumberFormat.DECIMAL_ZERO )) { // Where this level sets <w:isLgl>, what other formats are to be respected? 
     281                        result.append(lvl.getCurrentValueFormatted() );                          
     282                    } else if (isLegal ) { 
     283                        // Use normal decimal numbering 
     284                        result.append(lvl.getCurrentValueUnformatted() ); 
     285                         
     286                    } else { 
     287                        // Usual case 
     288                        result.append(lvl.getCurrentValueFormatted() ); 
     289                    } 
    272290                    i++; 
    273291                } 
Note: See TracChangeset for help on using the changeset viewer.